Subversion Repositories Kolibri OS

Rev

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