[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