| * Copyright 1995 Alexandre Julliard |
| #ifndef __WINE_SELECTORS_H |
| #define __WINE_SELECTORS_H |
| extern WORD SELECTOR_AllocBlock( const void *base, DWORD size, |
| enum seg_type type, BOOL is32bit, |
| extern WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size ); |
| extern void SELECTOR_MoveBlock( WORD sel, const void *new_base ); |
| extern void SELECTOR_FreeBlock( WORD sel, WORD count ); |
| # define __DEFINE_GET_SEG(seg) \ |
| extern inline unsigned short __get_##seg(void) \ |
| { unsigned short res; __asm__("movw %%" #seg ",%w0" : "=r"(res)); return res; } |
| # define __DEFINE_SET_SEG(seg) \ |
| extern inline void __set_##seg(int val) { __asm__("movw %w0,%%" #seg : : "r" (val)); } |
| # define __DEFINE_GET_SEG(seg) extern unsigned short __get_##seg(void); |
| # define __DEFINE_SET_SEG(seg) extern void __set_##seg(unsigned int); |
| # define __DEFINE_GET_SEG(seg) static inline unsigned short __get_##seg(void) { return 0; } |
| # define __DEFINE_SET_SEG(seg) /* nothing */ |
| #endif /* __WINE_SELECTORS_H */ |