aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2011-12-18 10:51:19 -0500
committerKevin O'Connor <kevin@koconnor.net>2011-12-18 10:57:39 -0500
commit9887ecb7dd95d9cea6986dbfdf9177694b92aa79 (patch)
tree8695f5a5e9923a867f2c42070533ec8b65c23192 /Makefile
parentbd515acd328f0cc356cc3a859597c1e9186893f5 (diff)
downloadseabios-hppa-9887ecb7dd95d9cea6986dbfdf9177694b92aa79.zip
seabios-hppa-9887ecb7dd95d9cea6986dbfdf9177694b92aa79.tar.gz
seabios-hppa-9887ecb7dd95d9cea6986dbfdf9177694b92aa79.tar.bz2
Don't use -fomit-frame-pointer when building VGA bios.
The real-mode emulator that Windows 7 uses to execute the vga bios rom becomes very confused when the code tries to dereference the stack pointer instead of using the frame pointer, leading to corruption of parameters passed on the stack from one function to another. Signed-off-by: Julian Pidancet <julian.pidancet@gmail.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile13
1 files changed, 7 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index e3cf384..4f0e6ab 100644
--- a/Makefile
+++ b/Makefile
@@ -32,21 +32,20 @@ COMMONCFLAGS = -I$(OUT) -Os -MD \
$(call cc-option,$(CC),-Wtype-limits,) \
-m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 \
-mrtd -minline-all-stringops \
- -freg-struct-return -ffreestanding -fomit-frame-pointer \
- -fno-delete-null-pointer-checks \
+ -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks \
-ffunction-sections -fdata-sections -fno-common
COMMONCFLAGS += $(call cc-option,$(CC),-nopie,)
COMMONCFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
COMMONCFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,)
-CFLAGS32FLAT = $(COMMONCFLAGS) -g -DMODE16=0 -DMODESEGMENT=0
+CFLAGS32FLAT = $(COMMONCFLAGS) -DMODE16=0 -DMODESEGMENT=0 -g -fomit-frame-pointer
CFLAGSSEG = $(COMMONCFLAGS) -DMODESEGMENT=1 -fno-defer-pop \
$(call cc-option,$(CC),-fno-jump-tables,-DMANUAL_NO_JUMP_TABLE) \
$(call cc-option,$(CC),-fno-tree-switch-conversion,)
-CFLAGS32SEG = $(CFLAGSSEG) -DMODE16=0 -g
+CFLAGS32SEG = $(CFLAGSSEG) -DMODE16=0 -g -fomit-frame-pointer
CFLAGS16INC = $(CFLAGSSEG) -DMODE16=1 \
$(call cc-option,$(CC),--param large-stack-frame=4,-fno-inline)
-CFLAGS16 = $(CFLAGS16INC) -g
+CFLAGS16 = $(CFLAGS16INC) -g -fomit-frame-pointer
all: $(OUT) $(OUT)bios.bin
@@ -173,7 +172,9 @@ $(OUT)bios.bin.elf $(OUT)bios.bin: $(OUT)rom.o tools/checkrom.py
SRCVGA=src/output.c src/util.c vgasrc/vga.c vgasrc/vgafb.c vgasrc/vgaio.c \
vgasrc/vgatables.c vgasrc/vgafonts.c vgasrc/clext.c
-$(OUT)vgaccode.16.s: $(OUT)autoconf.h ; $(call whole-compile, $(CFLAGS16) -S -Isrc, $(SRCVGA),$@)
+CFLAGS16VGA = $(CFLAGS16INC) -g -Isrc
+
+$(OUT)vgaccode.16.s: $(OUT)autoconf.h ; $(call whole-compile, $(CFLAGS16VGA) -S, $(SRCVGA),$@)
$(OUT)vgalayout16.o: vgaentry.S $(OUT)vgaccode.16.s $(OUT)asm-offsets.h
@echo " Compiling (16bit) $@"