diff --git a/debian/changelog b/debian/changelog index 65f079e05..b2a2fd4c5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -100,6 +100,9 @@ linux-2.6 (2.6.18-3) UNRELEASED; urgency=low - BCM1480: Mask pending interrupts against c0_status.im. - Cobalt: Time runs too quickly - Show actual CPU information in /proc/cpuinfo + - Workaround for bug in gcc -EB / -EL options + - Do not use -msym32 option for modules + - Fix O32 personality(2) call with 0xffffffff argument [ dann frazier ] * [ia64]: Fix booting on HP cell systems, thanks to Troy Heber diff --git a/debian/patches/bugfix/mips/modules_msym32.patch b/debian/patches/bugfix/mips/modules_msym32.patch new file mode 100644 index 000000000..aebd96782 --- /dev/null +++ b/debian/patches/bugfix/mips/modules_msym32.patch @@ -0,0 +1,31 @@ +From: Atsushi Nemoto +Date: Tue, 10 Oct 2006 13:13:55 +0000 (+0900) +Subject: [MIPS] Do not use -msym32 option for modules. +X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff_plain;h=c3a0eb881338608c32ff01da824da63e84aa6c8b;hp=ac5c84216a96351e2083f45e86295d934856873c + +[MIPS] Do not use -msym32 option for modules. + +On 64-bit kernel, modules are loaded into XKSEG for now. While XKSEG +address is not a sign-extended 32-bit address, we can not use -msym32 +option. + +Signed-off-by: Atsushi Nemoto +Signed-off-by: Ralf Baechle +(cherry picked from ca78b1a5c6a6e70e052d3ea253828e49b5d07c8a commit) +--- + +diff --git a/arch/mips/Makefile b/arch/mips/Makefile +index 7b3a4fc..6aba9d4 100644 +--- a/arch/mips/Makefile ++++ b/arch/mips/Makefile +@@ -63,7 +63,9 @@ cflags-y += -mabi=64 + ifdef CONFIG_BUILD_ELF64 + cflags-y += $(call cc-option,-mno-explicit-relocs) + else +-cflags-y += $(call cc-option,-msym32) ++# -msym32 can not be used for modules since they are loaded into XKSEG ++CFLAGS_MODULE += $(call cc-option,-mno-explicit-relocs) ++CFLAGS_KERNEL += $(call cc-option,-msym32) + endif + endif + diff --git a/debian/patches/bugfix/mips/o32_personality.patch b/debian/patches/bugfix/mips/o32_personality.patch new file mode 100644 index 000000000..09fbcda0d --- /dev/null +++ b/debian/patches/bugfix/mips/o32_personality.patch @@ -0,0 +1,31 @@ +From: Thiemo Seufer +Date: Sat, 12 Aug 2006 23:53:29 +0000 (+0100) +Subject: [MIPS] Fix O32 personality(2) call with 0xffffffff argument. +X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff_plain;h=55ceaed731ab2d60d855ebec59586fa3a327eebb;hp=005f7e56e5e4b7cb3e7b1df4b5ab950c5fc293bb + +[MIPS] Fix O32 personality(2) call with 0xffffffff argument. + +A sign extension bug did result in sys_personality being invoked with a +0xffffffffffffffffUL argument, so querying the current personality didn't +work. + +Signed-off-by: Thiemo Seufer +Signed-off-by: Ralf Baechle +(cherry picked from 8a43b10e297799553ff13793a84d1369c2af97b8 commit) +--- + +diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c +index dc500e2..4b8cdc3 100644 +--- a/arch/mips/kernel/linux32.c ++++ b/arch/mips/kernel/linux32.c +@@ -1053,7 +1053,9 @@ asmlinkage long sys32_newuname(struct ne + asmlinkage int sys32_personality(unsigned long personality) + { + int ret; +- if (current->personality == PER_LINUX32 && personality == PER_LINUX) ++ personality &= 0xffffffff; ++ if (personality(current->personality) == PER_LINUX32 && ++ personality == PER_LINUX) + personality = PER_LINUX32; + ret = sys_personality(personality); + if (ret == PER_LINUX32) diff --git a/debian/patches/bugfix/mips/workaround_gcc_options.patch b/debian/patches/bugfix/mips/workaround_gcc_options.patch new file mode 100644 index 000000000..007571169 --- /dev/null +++ b/debian/patches/bugfix/mips/workaround_gcc_options.patch @@ -0,0 +1,40 @@ +From: Ralf Baechle +Date: Tue, 10 Oct 2006 14:44:10 +0000 (+0100) +Subject: [MIPS] Workaround for bug in gcc -EB / -EL options. +X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff_plain;h=ac5c84216a96351e2083f45e86295d934856873c;hp=df58f5ceeb135ebbc502e62d94c73b3c8f126bdb + +[MIPS] Workaround for bug in gcc -EB / -EL options. + +Certain gcc versions upto gcc 4.1.1 (probably 4.2-subversion as of +2006-10-10 don't properly change the the predefined symbols if -EB / -EL +are used, so we kludge that here. A bug has been filed at +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413. + +Signed-off-by: Ralf Baechle +(cherry picked from c996701ba987f44aca1982360dc6407f140229ef commit) +--- + +diff --git a/arch/mips/Makefile b/arch/mips/Makefile +index f4227d2..7b3a4fc 100644 +--- a/arch/mips/Makefile ++++ b/arch/mips/Makefile +@@ -91,8 +91,17 @@ # to compile kernels with a toolchain fo + # carefully avoid to add it redundantly because gcc 3.3/3.4 complains + # when fed the toolchain default! + # +-cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB -D__MIPSEB__) +-cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL -D__MIPSEL__) ++# Certain gcc versions upto gcc 4.1.1 (probably 4.2-subversion as of ++# 2006-10-10 don't properly change the the predefined symbols if -EB / -EL ++# are used, so we kludge that here. A bug has been filed at ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413. ++# ++undef-all += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__ ++undef-all += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__ ++predef-be += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__ ++predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__ ++cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be)) ++cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le)) + + cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \ + -fno-omit-frame-pointer diff --git a/debian/patches/series/3 b/debian/patches/series/3 index e8721b615..3bfd15e51 100644 --- a/debian/patches/series/3 +++ b/debian/patches/series/3 @@ -4,6 +4,9 @@ + bugfix/mips/sb1480_interrupt_fixes.patch + bugfix/mips/cobalt_hz.patch + bugfix/mips/real-cpu-cpuinfo.patch ++ bugfix/mips/modules_msym32.patch ++ bugfix/mips/workaround_gcc_options.patch ++ bugfix/mips/o32_personality.patch + bugfix/sky2-receive-FIFO-fix.patch + features/all/drivers/scsi-ahci-cleanup-1.patch + features/all/drivers/scsi-ahci-cleanup-2.patch