| /* |
| * Selector definitions |
| * |
| * Copyright 1995 Alexandre Julliard |
| */ |
| |
| #ifndef __WINE_SELECTORS_H |
| #define __WINE_SELECTORS_H |
| |
| #include "windef.h" |
| #include "ldt.h" |
| |
| extern WORD SELECTOR_AllocBlock( const void *base, DWORD size, |
| enum seg_type type, BOOL is32bit, |
| BOOL readonly ); |
| 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 ); |
| |
| #ifdef __i386__ |
| # define __GET_SEG(seg,res) __asm__( "movw %%" seg ",%w0" : "=r" (res) ) |
| # define __SET_SEG(seg,val) __asm__( "movw %w0,%%" seg : : "r" (val) ) |
| #else /* __i386__ */ |
| # define __GET_SEG(seg,res) ((res) = 0) |
| # define __SET_SEG(seg,val) /* nothing */ |
| #endif /* __i386__ */ |
| |
| #define GET_CS(cs) __GET_SEG("cs",cs) |
| #define GET_DS(ds) __GET_SEG("ds",ds) |
| #define GET_ES(es) __GET_SEG("es",es) |
| #define GET_FS(fs) __GET_SEG("fs",fs) |
| #define GET_GS(gs) __GET_SEG("gs",gs) |
| #define GET_SS(ss) __GET_SEG("ss",ss) |
| |
| #define SET_CS(cs) __SET_SEG("cs",cs) |
| #define SET_DS(ds) __SET_SEG("ds",ds) |
| #define SET_ES(es) __SET_SEG("es",es) |
| #define SET_FS(fs) __SET_SEG("fs",fs) |
| #define SET_GS(gs) __SET_SEG("gs",gs) |
| #define SET_SS(ss) __SET_SEG("ss",ss) |
| |
| #endif /* __WINE_SELECTORS_H */ |