Subversion Repositories Kolibri OS

Rev

Rev 862 | Rev 888 | 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
    "pushfl\n\t"
886 serge 40
    "popl %0\n\t"
41
		"cli\n"
854 serge 42
    : "=r" (tmp)
43
	);
44
  return tmp;
45
}
46
47
 
48
{
49
	asm volatile (
50
    "pushl %0\n\t"
886 serge 51
    "popfl\n"
52
    : : "r" (efl)
854 serge 53
	);
54
}
55
859 serge 56
 
57
{
58
  count_t n;
59
  asm volatile ("xorl %0, %0 \n\t"
886 serge 60
                "bsr %1, %0"
61
                :"=&r" (n)
859 serge 62
                :"r"(arg)
63
                );
64
	return n;
65
}
66
67
 
68
{
69
  count_t n;
70
  asm volatile ("xorl %0, %0 \n\t"
886 serge 71
                "bsf %1, %0"
72
                :"=&r" (n)
859 serge 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