Subversion Repositories Kolibri OS

Rev

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

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