diff options
Diffstat (limited to 'src/arch/i386/include')
| -rw-r--r-- | src/arch/i386/include/libkir.h | 9 | ||||
| -rw-r--r-- | src/arch/i386/include/librm.h | 19 |
2 files changed, 21 insertions, 7 deletions
diff --git a/src/arch/i386/include/libkir.h b/src/arch/i386/include/libkir.h index 82df82222..a54c343a5 100644 --- a/src/arch/i386/include/libkir.h +++ b/src/arch/i386/include/libkir.h @@ -213,6 +213,15 @@ virt_to_user ( void * virtual ) { #define BASEMEM_PARAMETER_INIT BASEMEM_PARAMETER_INIT_LIBKIR #define BASEMEM_PARAMETER_DONE BASEMEM_PARAMETER_DONE_LIBKIR +/* TEXT16_CODE: declare a fragment of code that resides in .text16 */ +#define TEXT16_CODE( asm_code_str ) \ + ".section \".text16\", \"ax\", @progbits\n\t" \ + ".code16\n\t" \ + ".arch i386\n\t" \ + asm_code_str "\n\t" \ + ".code16gcc\n\t" \ + ".previous\n\t" + /* REAL_CODE: declare a fragment of code that executes in real mode */ #define REAL_CODE( asm_code_str ) \ ".code16\n\t" \ diff --git a/src/arch/i386/include/librm.h b/src/arch/i386/include/librm.h index 8b0169edb..3f2dbd574 100644 --- a/src/arch/i386/include/librm.h +++ b/src/arch/i386/include/librm.h @@ -177,20 +177,25 @@ extern void remove_from_rm_stack ( void *data, size_t size ); #define BASEMEM_PARAMETER_INIT BASEMEM_PARAMETER_INIT_LIBRM #define BASEMEM_PARAMETER_DONE BASEMEM_PARAMETER_DONE_LIBRM -/* REAL_CODE: declare a fragment of code that executes in real mode */ -#define REAL_CODE( asm_code_str ) \ - "pushl $1f\n\t" \ - "call real_call\n\t" \ - "addl $4, %%esp\n\t" \ +/* TEXT16_CODE: declare a fragment of code that resides in .text16 */ +#define TEXT16_CODE( asm_code_str ) \ ".section \".text16\", \"ax\", @progbits\n\t" \ ".code16\n\t" \ ".arch i386\n\t" \ - "\n1:\n\t" \ asm_code_str "\n\t" \ - "ret\n\t" \ ".code32\n\t" \ ".previous\n\t" +/* REAL_CODE: declare a fragment of code that executes in real mode */ +#define REAL_CODE( asm_code_str ) \ + "pushl $1f\n\t" \ + "call real_call\n\t" \ + "addl $4, %%esp\n\t" \ + TEXT16_CODE ( "\n1:\n\t" \ + asm_code_str \ + "\n\t" \ + "ret\n\t" ) + #endif /* ASSEMBLY */ #endif /* LIBRM_H */ |
