diff options
author | Michael Brown | 2006-05-24 01:42:45 +0200 |
---|---|---|
committer | Michael Brown | 2006-05-24 01:42:45 +0200 |
commit | 897313007b29afbb0c5e29c8b777c34ab812d95b (patch) | |
tree | f7c68cfb13fd20b4f0fbc5ad2ca4f89f381820a6 /src/arch/i386/include/librm.h | |
parent | Cope with regions bigger than 4GB. (diff) | |
download | ipxe-897313007b29afbb0c5e29c8b777c34ab812d95b.tar.gz ipxe-897313007b29afbb0c5e29c8b777c34ab812d95b.tar.xz ipxe-897313007b29afbb0c5e29c8b777c34ab812d95b.zip |
Add __{text,data}16_array, since there's no way I can see to make the
usual __{text,data}16 trick work with arrays. gcc seems to accept the
__asm__ ( asmlabel ) only after the [] of the array declaration, not
before.
Diffstat (limited to 'src/arch/i386/include/librm.h')
-rw-r--r-- | src/arch/i386/include/librm.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/arch/i386/include/librm.h b/src/arch/i386/include/librm.h index 17fcc78b..490f6eef 100644 --- a/src/arch/i386/include/librm.h +++ b/src/arch/i386/include/librm.h @@ -20,12 +20,20 @@ extern char *data16; extern char *text16; #define __data16( variable ) \ - _data16_ ## variable __asm__ ( #variable ) \ - __attribute__ (( section ( ".data16" ) )) + __attribute__ (( section ( ".data16" ) )) \ + _data16_ ## variable __asm__ ( #variable ) + +#define __data16_array( variable, array ) \ + __attribute__ (( section ( ".data16" ) )) \ + _data16_ ## variable array __asm__ ( #variable ) #define __text16( variable ) \ - _text16_ ## variable __asm__ ( #variable ) \ - __attribute__ (( section ( ".text16.data" ) )) + __attribute__ (( section ( ".text16.data" ) )) \ + _text16_ ## variable __asm__ ( #variable ) + +#define __text16_array( variable, array ) \ + __attribute__ (( section ( ".text16.data" ) )) \ + _text16_ ## variable array __asm__ ( #variable ) #define __use_data16( variable ) \ ( * ( ( typeof ( _data16_ ## variable ) * ) \ |