aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2013-01-08 10:14:22 +0000
committerMatt Fleming <matt.fleming@intel.com>2013-01-08 10:37:06 +0000
commit8789d2689564c13754bac94c8309b0de1e34a42a (patch)
tree3e9c5a4a6d78ea898063444626388a232f681170
parentc5f62920d2a8ffba0e9c3282403a8676c6073de5 (diff)
downloadsyslinux-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/Makefile2
-rw-r--r--memdisk/Makefile2
-rw-r--r--memdump/Makefile2
-rw-r--r--mk/embedded.mk4
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,)