Rev 890 | Rev 928 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
854 | serge | 1 | |
890 | serge | 2 | #define IMAGE_BASE 0xE0100000 |
3 | #define LOAD_BASE 0x00100000 |
||
4 | |||
854 | serge | 5 | |
897 | serge | 6 | |
7 | |||
8 | |||
9 | |||
10 | |||
854 | serge | 11 | |
12 | |||
13 | |||
14 | |||
15 | |||
16 | |||
17 | |||
18 | |||
19 | panic_printf("Kernel panic in %s() at %s:%u: " format, __func__, \ |
||
20 | __FILE__, __LINE__, ##__VA_ARGS__); |
||
21 | |||
22 | |||
23 | if (!(expr)) { \ |
||
24 | panic("assertion failed (%s), caller=%p\n", #expr, CALLER); \ |
||
25 | } |
||
26 | |||
862 | serge | 27 | |
28 | |||
29 | |||
854 | serge | 30 | |
862 | serge | 31 | |
854 | serge | 32 | panic_printf("Kernel panic: " format, ##__VA_ARGS__); |
33 | |||
34 | |||
35 | |||
862 | serge | 36 | |
37 | |||
38 | |||
888 | serge | 39 | if (!(expr)) { \ |
40 | panic_printf("Kernel panic in %s() at %s:%u: " \ |
||
41 | "assertion failed (%s)",__func__ ,__FILE__,__LINE__, \ |
||
42 | #expr); \ |
||
43 | }; |
||
44 | |||
45 | |||
854 | serge | 46 | |
47 | |||
48 | |||
49 | { |
||
50 | eflags_t tmp; |
||
51 | asm volatile ( |
||
52 | "pushfl\n\t" |
||
886 | serge | 53 | "popl %0\n\t" |
54 | "cli\n" |
||
854 | serge | 55 | : "=r" (tmp) |
56 | ); |
||
57 | return tmp; |
||
58 | } |
||
59 | |||
60 | |||
61 | { |
||
62 | asm volatile ( |
||
63 | "pushl %0\n\t" |
||
886 | serge | 64 | "popfl\n" |
65 | : : "r" (efl) |
||
854 | serge | 66 | ); |
67 | } |
||
68 | |||
859 | serge | 69 | |
70 | { |
||
71 | count_t n; |
||
72 | asm volatile ("xorl %0, %0 \n\t" |
||
886 | serge | 73 | "bsr %1, %0" |
74 | :"=&r" (n) |
||
859 | serge | 75 | :"r"(arg) |
76 | ); |
||
77 | return n; |
||
78 | } |
||
79 | |||
80 | |||
81 | { |
||
82 | count_t n; |
||
83 | asm volatile ("xorl %0, %0 \n\t" |
||
886 | serge | 84 | "bsf %1, %0" |
85 | :"=&r" (n) |
||
859 | serge | 86 | :"r"(arg) |
87 | ); |
||
88 | return n; |
||
89 | } |
||
90 | |||
91 | |||
92 | { |
||
93 | asm volatile ("bts %0, %1 \n\t" |
||
94 | : |
||
95 | :"g"(data), "r"(val) |
||
96 | :"cc" |
||
97 | ); |
||
98 | } |
||
99 | |||
100 | |||
889 | serge | 101 | { |
859 | serge | 102 | asm volatile ("btr %0, %1 \n\t" |
103 | : |
||
104 | :"g"(data), "r"(val) |
||
105 | :"cc" |
||
106 | ); |
||
107 | } |
||
108 | |||
889 | serge | 109 | |
110 | { |
||
111 | void* retval; |
||
112 | size_t tmp; |
||
113 | |||
114 | |||
115 | "pushl %%eax \n\t" |
||
116 | "call _load_file@4 \n\t" |
||
117 | :"=eax" (retval), "=ebx"(tmp) |
||
118 | :"a" (path) ); |
||
119 | |||
120 | |||
121 | *size = tmp; |
||
122 | return retval; |
||
123 | }; |
||
124 | |||
125 | |||
126 | |||
127 |