[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