[syslinux:firmware] core: Do not use -mregparm

syslinux-bot for Matt Fleming matt.fleming at intel.com
Fri Nov 9 09:06:07 PST 2012


Commit-ID:  04303c2561333b937c30e37732cefe1df0abb280
Gitweb:     http://www.syslinux.org/commit/04303c2561333b937c30e37732cefe1df0abb280
Author:     Matt Fleming <matt.fleming at intel.com>
AuthorDate: Thu, 15 Dec 2011 11:06:56 +0000
Committer:  Matt Fleming <matt.fleming at intel.com>
CommitDate: Fri, 16 Dec 2011 16:31:19 +0000

core: Do not use -mregparm

When trying to integrate the old com32 code with EFI, EFI doesn't use
mregparm. Using mregparm leads to incompatibilities with most 3rd
party code anyway and it only results in a minimal space-saving at
runtime. Pass all parameters on the stack by default.

---
 com32/lib/memcpy.S  |    4 ++++
 com32/lib/memmove.S |    4 ++++
 com32/lib/mempcpy.S |    4 ++++
 com32/lib/memset.S  |    4 ++++
 mk/com32.mk         |    2 +-
 mk/elf.mk           |    2 +-
 mk/lib.mk           |    2 +-
 7 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/com32/lib/memcpy.S b/com32/lib/memcpy.S
index 6b986a0..9b5306d 100644
--- a/com32/lib/memcpy.S
+++ b/com32/lib/memcpy.S
@@ -36,6 +36,10 @@
 	.globl	memcpy
 	.type	memcpy, @function
 memcpy:
+	movl	0xc(%esp),%ecx
+	movl	0x8(%esp),%edx
+	movl	0x4(%esp),%eax
+
 	jecxz	1f
 
 	pushl	%esi
diff --git a/com32/lib/memmove.S b/com32/lib/memmove.S
index e97299f..2094e4a 100644
--- a/com32/lib/memmove.S
+++ b/com32/lib/memmove.S
@@ -37,6 +37,10 @@
 	.type	memmove, at function
 	.text
 memmove:
+	movl	0xc(%esp),%ecx
+	movl	0x8(%esp),%edx
+	movl	0x4(%esp),%eax
+
 	jecxz	4f
 
 	pushl	%esi
diff --git a/com32/lib/mempcpy.S b/com32/lib/mempcpy.S
index cad7b98..2096f13 100644
--- a/com32/lib/mempcpy.S
+++ b/com32/lib/mempcpy.S
@@ -36,6 +36,10 @@
 	.globl	mempcpy
 	.type	mempcpy, @function
 mempcpy:
+	movl	0xc(%esp),%ecx
+	movl	0x8(%esp),%edx
+	movl	0x4(%esp),%eax
+
 	jecxz	1f
 
 	pushl	%esi
diff --git a/com32/lib/memset.S b/com32/lib/memset.S
index e641415..fd42842 100644
--- a/com32/lib/memset.S
+++ b/com32/lib/memset.S
@@ -36,6 +36,10 @@
 	.type	memset, at function
 	.text
 memset:
+	movl	0xc(%esp),%ecx
+	movl	0x8(%esp),%edx
+	movl	0x4(%esp),%eax
+
 	jecxz	6f
 
 	pushl	%edi
diff --git a/mk/com32.mk b/mk/com32.mk
index 262d2a6..db716c0 100644
--- a/mk/com32.mk
+++ b/mk/com32.mk
@@ -22,7 +22,7 @@ GCCOPT += $(call gcc_ok,-m32,)
 GCCOPT += $(call gcc_ok,-fno-stack-protector,)
 GCCOPT += $(call gcc_ok,-fwrapv,)
 GCCOPT += $(call gcc_ok,-freg-struct-return,)
-GCCOPT += -mregparm=3 -DREGPARM=3 -march=i386 -Os
+GCCOPT += -march=i386 -Os
 GCCOPT += $(call gcc_ok,-fPIE,-fPIC)
 GCCOPT += $(call gcc_ok,-fno-exceptions,)
 GCCOPT += $(call gcc_ok,-fno-asynchronous-unwind-tables,)
diff --git a/mk/elf.mk b/mk/elf.mk
index 5a2ce2d..83b2c46 100644
--- a/mk/elf.mk
+++ b/mk/elf.mk
@@ -21,7 +21,7 @@ GCCOPT += $(call gcc_ok,-m32,)
 GCCOPT += $(call gcc_ok,-fno-stack-protector,)
 GCCOPT += $(call gcc_ok,-fwrapv,)
 GCCOPT += $(call gcc_ok,-freg-struct-return,)
-GCCOPT += -march=i386 -Os -fomit-frame-pointer -mregparm=3 -DREGPARM=3
+GCCOPT += -march=i386 -Os -fomit-frame-pointer
 GCCOPT += $(call gcc_ok,-fno-exceptions,)
 GCCOPT += $(call gcc_ok,-fno-asynchronous-unwind-tables,)
 GCCOPT += $(call gcc_ok,-fPIE,-fPIC)
diff --git a/mk/lib.mk b/mk/lib.mk
index 3d184c5..24b8d55 100644
--- a/mk/lib.mk
+++ b/mk/lib.mk
@@ -31,7 +31,7 @@ LIBFLAGS = -DDYNAMIC_CRC_TABLE -DPNG_NO_CONSOLE_IO \
 # fallback anyway, just use that on old machines...
 # LIBFLAGS += -DPNG_NO_FLOATING_POINT_SUPPORTED
 
-REQFLAGS  = $(GCCOPT) -g -mregparm=3 -DREGPARM=3 -D__COM32__ \
+REQFLAGS  = $(GCCOPT) -g -D__COM32__ \
 	    -nostdinc -iwithprefix include -I. -I./sys -I../include \
 	    -I../../core/include
 OPTFLAGS  = -Os -march=i386 -falign-functions=0 -falign-jumps=0 \


More information about the Syslinux-commits mailing list