Since SeaBIOS has been updated to use "_cfuncx_" prefixes when calling cross-mode C functions, there is no reason to restrict an exported C function to only the given mode.
Signed-off-by: Kevin O'Connor kevin@koconnor.net --- src/apm.c | 11 ++--------- src/romlayout.S | 4 ++-- src/types.h | 16 ++++++++-------- 3 files changed, 12 insertions(+), 19 deletions(-)
diff --git a/src/apm.c b/src/apm.c index 5e45b77..54696e9 100644 --- a/src/apm.c +++ b/src/apm.c @@ -223,15 +223,8 @@ handle_1553(struct bregs *regs) } }
-void VISIBLE16 -handle_apm16(struct bregs *regs) -{ - debug_enter(regs, DEBUG_HDL_apm); - handle_1553(regs); -} - -void VISIBLE32SEG -handle_apm32(struct bregs *regs) +void VISIBLE16 VISIBLE32SEG +handle_apm(struct bregs *regs) { debug_enter(regs, DEBUG_HDL_apm); handle_1553(regs); diff --git a/src/romlayout.S b/src/romlayout.S index 399f596..c95e8bc 100644 --- a/src/romlayout.S +++ b/src/romlayout.S @@ -308,7 +308,7 @@ entry_pnp_real: entry_apm16: pushfw // save flags pushl %eax // dummy - ENTRY_ARG handle_apm16 + ENTRY_ARG handle_apm addw $4, %sp // pop dummy popfw // restore flags lretw @@ -321,7 +321,7 @@ entry_apm32: pushl %cs // Move second descriptor after %cs to %gs addl $16, (%esp) popl %gs - ENTRY_ARG_ESP _cfunc32seg_handle_apm32 + ENTRY_ARG_ESP _cfunc32seg_handle_apm popl %gs popfl lretl diff --git a/src/types.h b/src/types.h index 0f83697..b10f3b3 100644 --- a/src/types.h +++ b/src/types.h @@ -44,11 +44,11 @@ extern void __force_link_error__only_in_16bit(void) __noreturn; // Notes a function as externally visible in the 16bit code chunk. # define VISIBLE16 __VISIBLE // Notes a function as externally visible in the 32bit flat code chunk. -# define VISIBLE32FLAT __section(".discard.func32flat." UNIQSEC) noinline +# define VISIBLE32FLAT // Notes a 32bit flat function that will only be called during init. -# define VISIBLE32INIT VISIBLE32FLAT +# define VISIBLE32INIT // Notes a function as externally visible in the 32bit segmented code chunk. -# define VISIBLE32SEG __section(".discard.func32seg." UNIQSEC) noinline +# define VISIBLE32SEG // Designate a variable as (only) visible to 16bit code. # define VAR16 __section(".data16." UNIQSEC) // Designate a variable as visible to 16bit, 32bit, and assembler code. @@ -72,9 +72,9 @@ extern void __force_link_error__only_in_16bit(void) __noreturn; # define ASSERT32SEG() __force_link_error__only_in_32bit_segmented() # define ASSERT32FLAT() __force_link_error__only_in_32bit_flat() #elif MODESEGMENT == 1 -# define VISIBLE16 __section(".discard.func16." UNIQSEC) noinline -# define VISIBLE32FLAT __section(".discard.func32flat." UNIQSEC) noinline -# define VISIBLE32INIT VISIBLE32FLAT +# define VISIBLE16 +# define VISIBLE32FLAT +# define VISIBLE32INIT # define VISIBLE32SEG __VISIBLE # define VAR16 __section(".discard.var16." UNIQSEC) # define VAR16VISIBLE VAR16 __VISIBLE __weak @@ -89,10 +89,10 @@ extern void __force_link_error__only_in_16bit(void) __noreturn; # define ASSERT32SEG() do { } while (0) # define ASSERT32FLAT() __force_link_error__only_in_32bit_flat() #else -# define VISIBLE16 __section(".discard.func16." UNIQSEC) noinline +# define VISIBLE16 # define VISIBLE32FLAT __section(".text.runtime." UNIQSEC) __VISIBLE # define VISIBLE32INIT __section(".text.init." UNIQSEC) __VISIBLE -# define VISIBLE32SEG __section(".discard.func32seg." UNIQSEC) noinline +# define VISIBLE32SEG # define VAR16 __section(".discard.var16." UNIQSEC) # define VAR16VISIBLE VAR16 __VISIBLE __weak # define VAR16EXPORT VAR16VISIBLE