Subversion Repositories Kolibri OS

Rev

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