[syslinux:firmware] mk/embedded.mk: Don't use -mregparm in core
syslinux-bot for Matt Fleming
matt.fleming at intel.com
Tue Jan 8 02:42:04 PST 2013
Commit-ID: 8789d2689564c13754bac94c8309b0de1e34a42a
Gitweb: http://www.syslinux.org/commit/8789d2689564c13754bac94c8309b0de1e34a42a
Author: Matt Fleming <matt.fleming at intel.com>
AuthorDate: Tue, 8 Jan 2013 10:14:22 +0000
Committer: Matt Fleming <matt.fleming at intel.com>
CommitDate: Tue, 8 Jan 2013 10:37:06 +0000
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 at intel.com>
---
dos/Makefile | 2 +-
memdisk/Makefile | 2 +-
memdump/Makefile | 2 ++
mk/embedded.mk | 4 +---
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dos/Makefile b/dos/Makefile
index 1371205..6cf81b7 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 4ae0855..e6557d8 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 e5c2796..ae2b3f0 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 ffebe83..5a7632e 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,)
More information about the Syslinux-commits
mailing list