Subversion Repositories Kolibri OS

Rev

Rev 882 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
882 serge 1
 
2
 
3
  unsigned      handle;
4
  unsigned      io_code;
5
  void          *input;
6
  int           inp_size;
7
  void          *output;
8
  int           out_size;
9
}ioctl_t;
10
11
12
 
13
 
14
#define ERR_NOMEM   -2
15
16
17
 
18
 
19
#ifdef KOLIBRI_PE
20
 
1002 serge 21
#else
22
  #define  LFB_BASE   0xFE000000
23
#endif
24
25
882 serge 26
 
1002 serge 27
 
882 serge 28
static int __attribute__ ((always_inline))
29
 
30
{
31
  return i < 0 ? -i : i;
32
};
33
34
35
 
36
 
37
  u32_t retval;
38
  asm("int $0x40"
39
      :"=a"(retval)
40
      :"a"(68),"b"(16),"c"(name));
41
42
  return retval;
43
 
44
45
extern inline u32_t load_service(char *name)
46
 
47
  u32_t retval;
48
  asm("int $0x40"
49
      :"=a"(retval)
50
      :"a"(68),"b"(21),"c"(name));
51
52
  return retval;
53
 
54
55
extern inline int call_service(ioctl_t *io)
56
 
57
  int retval;
58
59
  asm("int $0x40"
60
 
61
      :"a"(68),"b"(17),"c"(io)
62
      :"memory");
63
64
  return retval;
65
 
66
67
extern inline void* UserAlloc(size_t size)
68
 
69
  void *retval;
70
71
  asm("int $0x40"
72
 
73
      :"a"(68),"b"(12),"c"(size)
74
      :"memory");
75
  return retval;
76
}
77
78
extern inline void UserFree(void *mem)
79
 
80
     __asm__ __volatile__(
81
     "int $0x40"
82
     ::"a"(68),"b"(13),"c"(mem)
83
     :"memory");
84
}
85
86
extern inline int GetScreenSize()
87
 
88
     int retval;
89
90
     __asm__ __volatile__(
91
 
92
     :"=a"(retval)
93
     :"a"(61), "b"(1));
94
     return retval;
95
}
96
97
extern inline int GetScreenBpp()
98
 
99
     int retval;
100
101
     __asm__ __volatile__(
102
 
103
     :"=a"(retval)
104
     :"a"(61), "b"(2));
105
     return retval;
106
}
107
108
extern inline int GetScreenPitch()
109
 
110
     int retval;
111
112
     __asm__ __volatile__(
113
 
114
     :"=a"(retval)
115
     :"a"(61), "b"(3));
116
     return retval;
117
}
118
119
extern inline int test_mmx()
120
 
121
     int retval;
122
123
     __asm__ __volatile__(
124
 
125
     "testl $23, %%edx\n\t"
126
     "setnzb %%al\n\t"
127
     "movzx %%al, %%eax"
128
     :"=a"(retval)
129
     :"a"(0)
130
     :"ebx","ecx","edx");
131
132
     return retval;
133
 
134