Subversion Repositories Kolibri OS

Rev

Rev 859 | Rev 886 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
854 serge 1
 
2
3
 
4
 
5
6
 
7
8
 
9
10
 
11
12
 
13
		panic_printf("Kernel panic in %s() at %s:%u: " format, __func__, \
14
		__FILE__, __LINE__, ##__VA_ARGS__);
15
16
 
17
		if (!(expr)) { \
18
			panic("assertion failed (%s), caller=%p\n", #expr, CALLER); \
19
		}
20
862 serge 21
 
22
23
 
854 serge 24
862 serge 25
 
854 serge 26
		panic_printf("Kernel panic: " format, ##__VA_ARGS__);
27
28
 
29
862 serge 30
 
31
32
 
854 serge 33
34
 
35
 
36
{
37
  eflags_t tmp;
38
	asm volatile (
39
    "pushf\n\t"
40
    "pop %0\n\t"
41
		"cli\n"
42
    : "=r" (tmp)
43
	);
44
  return tmp;
45
}
46
47
 
48
{
49
	asm volatile (
50
    "push %0\n\t"
51
		"popf\n"
52
    : : "r" (efl)
53
	);
54
}
55
859 serge 56
 
57
{
58
  count_t n;
59
  asm volatile ("xor %0, %0 \n\t"
60
                "bsr %0, %1"
61
                :"=&r" (n)
62
                :"r"(arg)
63
                );
64
	return n;
65
}
66
67
 
68
{
69
  count_t n;
70
  asm volatile ("xor %0, %0 \n\t"
71
                "bsf %0, %1"
72
                :"=&r" (n)
73
                :"r"(arg)
74
                );
75
	return n;
76
}
77
78
 
79
{
80
  asm volatile ("bts %0, %1 \n\t"
81
                :
82
                :"g"(data), "r"(val)
83
                :"cc"
84
                );
85
}
86
87
 
88
{
89
  asm volatile ("btr %0, %1 \n\t"
90
                :
91
                :"g"(data), "r"(val)
92
                :"cc"
93
                );
94
}
95