diff options
| author | Matt Fleming <matt.fleming@intel.com> | 2013-06-19 10:44:11 +0100 |
|---|---|---|
| committer | Matt Fleming <matt.fleming@intel.com> | 2013-06-19 10:44:11 +0100 |
| commit | db25b06af0a4be7231a120d53b24cc01e17ed315 (patch) | |
| tree | aabf1b5d2702c5e5bcd407a0aff17ff90ef33253 /mk/embedded.mk | |
| parent | a0bb1928c8652aada30243089c53754ddd9b99df (diff) | |
| download | syslinux-db25b06af0a4be7231a120d53b24cc01e17ed315.tar.gz | |
mk: reinstate -mregparm for BIOS
There's still a bunch of assembly code that assumes we're building our C
objects with -mregparm=3. For example, the code to transition from
16-bit real-mode mode to 32-bit protected mode assumes this. Violating
this assumption leads to various hangs, caused by garbage function
arguments.
Put back -mregparm into CFLAGS that was removed in commit 8789d2689564
("mk/embedded.mk: Don't use -mregparm in core").
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Diffstat (limited to 'mk/embedded.mk')
| -rw-r--r-- | mk/embedded.mk | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mk/embedded.mk b/mk/embedded.mk index 5a7632e9..1614d8bc 100644 --- a/mk/embedded.mk +++ b/mk/embedded.mk @@ -38,7 +38,12 @@ GCCOPT += $(call gcc_ok,-ffreestanding,) GCCOPT += $(call gcc_ok,-fno-stack-protector,) GCCOPT += $(call gcc_ok,-fwrapv,) GCCOPT += $(call gcc_ok,-freg-struct-return,) +ifdef EFI_BUILD GCCOPT += -Os -fomit-frame-pointer -msoft-float +else +GCCOPT += -Os -fomit-frame-pointer -mregparm=3 -DREGPARM=3 \ + -msoft-float +endif GCCOPT += $(call gcc_ok,-fno-exceptions,) GCCOPT += $(call gcc_ok,-fno-asynchronous-unwind-tables,) GCCOPT += $(call gcc_ok,-fno-strict-aliasing,) |
