source:
trunk/include/os2sel.h@
9999
| Last change on this file since 9999 was 9969, checked in by , 23 years ago | |
|---|---|
| File size: 1.3 KB | |
| Rev | Line | |
|---|---|---|
| [9969] | 1 | /* $Id: os2sel.h,v 1.12 2003-04-02 11:02:34 sandervl Exp $ */ |
| [48] | 2 | /* |
| 3 | * | |
| 4 | * Project Odin Software License can be found in LICENSE.TXT | |
| 5 | * | |
| 6 | */ | |
| 7 | #ifndef __OS2SEL_H__ | |
| 8 | #define __OS2SEL_H__ | |
| 9 | ||
| [6997] | 10 | |
| 11 | #ifdef __cplusplus | |
| 12 | extern "C" { | |
| 13 | #endif | |
| 14 | ||
| 15 | ||
| [4075] | 16 | #ifdef __WATCOMC__ |
| 17 | unsigned short GetFS(void); | |
| 18 | #pragma aux GetFS = \ | |
| 19 | "mov ax,fs" \ | |
| 20 | value [ax] \ | |
| 21 | parm nomemory; | |
| [48] | 22 | |
| [4075] | 23 | void SetFS(unsigned short sel); |
| 24 | #pragma aux SetFS = \ | |
| 25 | "mov fs,ax" \ | |
| 26 | parm [ax]; | |
| 27 | ||
| 28 | unsigned short RestoreOS2FS(void); | |
| 29 | #pragma aux RestoreOS2FS = \ | |
| 30 | "mov bx, fs" \ | |
| 31 | "mov ax, 150bh" \ | |
| 32 | "mov fs, ax" \ | |
| 33 | value [bx] \ | |
| 34 | modify nomemory exact [ax]; | |
| [9631] | 35 | #endif |
| [4075] | 36 | |
| [9631] | 37 | #ifdef __EMX__ |
| [9969] | 38 | static inline unsigned short GetFS(void) |
| [9631] | 39 | { |
| 40 | asm volatile ( | |
| [9735] | 41 | "mov %fs, %ax \n\t" |
| [9631] | 42 | ); |
| 43 | } | |
| 44 | ||
| [9969] | 45 | static inline void SetFS(unsigned short sel) |
| [9631] | 46 | { |
| [9735] | 47 | __asm__ __volatile__("movw %%ax,%%fs" : : "a" (sel)); |
| [9631] | 48 | } |
| 49 | ||
| [9969] | 50 | static inline unsigned short RestoreOS2FS(void) |
| [9631] | 51 | { |
| 52 | asm volatile ( | |
| [9735] | 53 | "push $0x0150b \n\t" |
| 54 | "movw %fs,%ax \n\t" | |
| [9631] | 55 | "pop %fs" |
| 56 | ); | |
| 57 | } | |
| 58 | ||
| 59 | ||
| [4075] | 60 | #else |
| [6997] | 61 | |
| 62 | unsigned short _System GetFS (void); | |
| 63 | unsigned short _System RestoreOS2FS(void); | |
| [4077] | 64 | void _System SetFS (unsigned short selector); |
| 65 | unsigned short _System SetReturnFS (unsigned short selector); | |
| [9631] | 66 | //SvL: Checks if thread FS & exception structure are valid |
| 67 | int _System CheckCurFS(void); | |
| [4075] | 68 | #endif |
| 69 | ||
| [6997] | 70 | |
| 71 | ||
| 72 | #ifdef __cplusplus | |
| 73 | } | |
| 74 | #endif | |
| [2544] | 75 | |
| [6997] | 76 | |
| [537] | 77 | #endif //__OS2SEL_H__ |
Note:
See TracBrowser
for help on using the repository browser.
