aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2011-12-15 11:06:56 +0000
committerMatt Fleming <matt.fleming@intel.com>2011-12-16 16:31:19 +0000
commit04303c2561333b937c30e37732cefe1df0abb280 (patch)
treef2e2b44dcd8a1e2f4a13271529ac3469974a1ad9
parent8f767b805cb3d63087d9d4f2eeb5eaf90bd71c30 (diff)
downloadsyslinux-04303c2561333b937c30e37732cefe1df0abb280.tar.gz
syslinux-04303c2561333b937c30e37732cefe1df0abb280.tar.xz
syslinux-04303c2561333b937c30e37732cefe1df0abb280.zip
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.
-rw-r--r--com32/lib/memcpy.S4
-rw-r--r--com32/lib/memmove.S4
-rw-r--r--com32/lib/mempcpy.S4
-rw-r--r--com32/lib/memset.S4
-rw-r--r--mk/com32.mk2
-rw-r--r--mk/elf.mk2
-rw-r--r--mk/lib.mk2
7 files changed, 19 insertions, 3 deletions
diff --git a/com32/lib/memcpy.S b/com32/lib/memcpy.S
index 6b986a0d..9b5306dd 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 e97299f2..2094e4aa 100644
--- a/com32/lib/memmove.S
+++ b/com32/lib/memmove.S
@@ -37,6 +37,10 @@
.type memmove,@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 cad7b983..2096f132 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 e641415d..fd42842a 100644
--- a/com32/lib/memset.S
+++ b/com32/lib/memset.S
@@ -36,6 +36,10 @@
.type memset,@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 262d2a6c..db716c0d 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 5a2ce2d9..83b2c46d 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 3d184c58..24b8d557 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 \