[SeaBIOS] [PATCH 11/13] Set noinline on kbd.c interface functions that take stack variable pointers.

Kevin O'Connor kevin at koconnor.net
Tue May 29 06:13:25 CEST 2012


Some versions of gcc have been found to inline these funcions and then
cause the calling functions to use very large stack usage.  Since
these functions are called from 16bit mode, their stack space usage is
very sensitive.

Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
---
 src/kbd.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/kbd.c b/src/kbd.c
index 0aa8988..e9ea594 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -165,7 +165,7 @@ handle_1609(struct bregs *regs)
 }
 
 // GET KEYBOARD ID
-static void
+static void noinline
 handle_160a(struct bregs *regs)
 {
     u8 param[2];
@@ -231,7 +231,7 @@ handle_16XX(struct bregs *regs)
     warn_unimplemented(regs);
 }
 
-static void
+static void noinline
 set_leds(void)
 {
     u8 shift_flags = (GET_BDA(kbd_flag0) >> 4) & 0x07;
-- 
1.7.6.5




More information about the SeaBIOS mailing list