Subversion Repositories Kolibri OS

Rev

Rev 854 | Rev 862 | 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
#else
21
#	define panic(format, ...) \
22
		panic_printf("Kernel panic: " format, ##__VA_ARGS__);
23
24
 
25
#endif
26
27
 
28
 
29
{
30
  eflags_t tmp;
31
	asm volatile (
32
    "pushf\n\t"
33
    "pop %0\n\t"
34
		"cli\n"
35
    : "=r" (tmp)
36
	);
37
  return tmp;
38
}
39
40
 
41
{
42
	asm volatile (
43
    "push %0\n\t"
44
		"popf\n"
45
    : : "r" (efl)
46
	);
47
}
48
859 serge 49
 
50
{
51
  count_t n;
52
  asm volatile ("xor %0, %0 \n\t"
53
                "bsr %0, %1"
54
                :"=&r" (n)
55
                :"r"(arg)
56
                );
57
	return n;
58
}
59
60
 
61
{
62
  count_t n;
63
  asm volatile ("xor %0, %0 \n\t"
64
                "bsf %0, %1"
65
                :"=&r" (n)
66
                :"r"(arg)
67
                );
68
	return n;
69
}
70
71
 
72
{
73
  asm volatile ("bts %0, %1 \n\t"
74
                :
75
                :"g"(data), "r"(val)
76
                :"cc"
77
                );
78
}
79
80
 
81
{
82
  asm volatile ("btr %0, %1 \n\t"
83
                :
84
                :"g"(data), "r"(val)
85
                :"cc"
86
                );
87
}
88