aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2012-05-28 18:31:39 -0400
committerKevin O'Connor <kevin@koconnor.net>2012-05-30 21:05:24 -0400
commit8ab4a7de12a2fc776822c82cc4233a37b35c40f3 (patch)
tree336ef4386486d6c6804924141bba62e4bfb06a1c
parentac7eb5eb54886f5372fc71c6ed266a08a49d8d05 (diff)
downloadseabios-8ab4a7de12a2fc776822c82cc4233a37b35c40f3.tar.gz
Set noinline on kbd.c interface functions that take stack variable pointers.
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@koconnor.net>
-rw-r--r--src/kbd.c4
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;