Subversion Repositories Kolibri OS

Rev

Rev 886 | Rev 889 | 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
 
888 serge 33
      if (!(expr)) {   \
34
         panic_printf("Kernel panic in %s() at %s:%u: " \
35
                      "assertion failed (%s)",__func__ ,__FILE__,__LINE__, \
36
                       #expr); \
37
      };
38
39
 
854 serge 40
41
 
42
 
43
{
44
  eflags_t tmp;
45
	asm volatile (
46
    "pushfl\n\t"
886 serge 47
    "popl %0\n\t"
48
		"cli\n"
854 serge 49
    : "=r" (tmp)
50
	);
51
  return tmp;
52
}
53
54
 
55
{
56
	asm volatile (
57
    "pushl %0\n\t"
886 serge 58
    "popfl\n"
59
    : : "r" (efl)
854 serge 60
	);
61
}
62
859 serge 63
 
64
{
65
  count_t n;
66
  asm volatile ("xorl %0, %0 \n\t"
886 serge 67
                "bsr %1, %0"
68
                :"=&r" (n)
859 serge 69
                :"r"(arg)
70
                );
71
	return n;
72
}
73
74
 
75
{
76
  count_t n;
77
  asm volatile ("xorl %0, %0 \n\t"
886 serge 78
                "bsf %1, %0"
79
                :"=&r" (n)
859 serge 80
                :"r"(arg)
81
                );
82
	return n;
83
}
84
85
 
86
{
87
  asm volatile ("bts %0, %1 \n\t"
88
                :
89
                :"g"(data), "r"(val)
90
                :"cc"
91
                );
92
}
93
94
 
95
{
96
  asm volatile ("btr %0, %1 \n\t"
97
                :
98
                :"g"(data), "r"(val)
99
                :"cc"
100
                );
101
}
102