diff options
author | Matt Fleming <matt.fleming@intel.com> | 2013-01-08 10:14:22 +0000 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2013-01-08 10:37:06 +0000 |
commit | 8789d2689564c13754bac94c8309b0de1e34a42a (patch) | |
tree | 3e9c5a4a6d78ea898063444626388a232f681170 | |
parent | c5f62920d2a8ffba0e9c3282403a8676c6073de5 (diff) | |
download | syslinux-8789d2689564c13754bac94c8309b0de1e34a42a.tar.gz syslinux-8789d2689564c13754bac94c8309b0de1e34a42a.tar.xz syslinux-8789d2689564c13754bac94c8309b0de1e34a42a.zip |
mk/embedded.mk: Don't use -mregparm in core
Unfortunately commit 4eb06d95d882 ("mk: Add -fPIC for x86_64 to
embedded.mk") left -mregparm enabled when compiling objects in core/,
which means that when compiling for i386 those objects are compiled
with a different ABI compared with everything else, leading to hangs
when booting under 32-bit EFI.
We should only enable -mregparm for code that absolutely requires it,
such as dos/crt0.S which would need to be re-written to use another
ABI.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
-rw-r--r-- | dos/Makefile | 2 | ||||
-rw-r--r-- | memdisk/Makefile | 2 | ||||
-rw-r--r-- | memdump/Makefile | 2 | ||||
-rw-r--r-- | mk/embedded.mk | 4 |
4 files changed, 5 insertions, 5 deletions
diff --git a/dos/Makefile b/dos/Makefile index 1371205e..6cf81b72 100644 --- a/dos/Makefile +++ b/dos/Makefile @@ -16,7 +16,7 @@ include $(MAKEDIR)/embedded.mk -CFLAGS += -D__MSDOS__ +CFLAGS += -D__MSDOS__ -mregparm=3 -DREGPARM=3 # CFLAGS += -DDEBUG LDFLAGS = -T $(SRC)/dosexe.ld diff --git a/memdisk/Makefile b/memdisk/Makefile index 4ae08554..e6557d87 100644 --- a/memdisk/Makefile +++ b/memdisk/Makefile @@ -15,7 +15,7 @@ include $(MAKEDIR)/embedded.mk -include $(topdir)/version.mk INCLUDES = -I$(topdir)/com32/include -I$(objdir) -CFLAGS += -D__MEMDISK__ -DDATE='"$(DATE)"' +CFLAGS += -D__MEMDISK__ -DDATE='"$(DATE)"' -mregparm=3 -DREGPARM=3 LDFLAGS = $(GCCOPT) -g NASM = nasm NASMOPT = -Ox diff --git a/memdump/Makefile b/memdump/Makefile index e5c27969..ae2b3f0e 100644 --- a/memdump/Makefile +++ b/memdump/Makefile @@ -17,6 +17,8 @@ VPATH = $(SRC) include $(MAKEDIR)/embedded.mk +CFLAGS += -mregparm=3 -DREGPARM=3 + OPTFLAGS = INCLUDES = -include $(SRC)/code16.h -I$(SRC) LDFLAGS = -T $(SRC)/com16.ld diff --git a/mk/embedded.mk b/mk/embedded.mk index ffebe83c..5a7632e9 100644 --- a/mk/embedded.mk +++ b/mk/embedded.mk @@ -38,9 +38,7 @@ GCCOPT += $(call gcc_ok,-ffreestanding,) GCCOPT += $(call gcc_ok,-fno-stack-protector,) GCCOPT += $(call gcc_ok,-fwrapv,) GCCOPT += $(call gcc_ok,-freg-struct-return,) -# FIXME: regparam for i386 and x86_64 could be different -GCCOPT += -Os -fomit-frame-pointer -mregparm=3 -DREGPARM=3 \ - -msoft-float +GCCOPT += -Os -fomit-frame-pointer -msoft-float GCCOPT += $(call gcc_ok,-fno-exceptions,) GCCOPT += $(call gcc_ok,-fno-asynchronous-unwind-tables,) GCCOPT += $(call gcc_ok,-fno-strict-aliasing,) |