---- a/arch/mips/include/asm/r4kcache.h 2008-12-03 14:06:48.000000000 +0100
-+++ b/arch/mips/include/asm/r4kcache.h 2008-12-05 08:16:03.000000000 +0100
+--- a/arch/mips/include/asm/r4kcache.h
++++ b/arch/mips/include/asm/r4kcache.h
@@ -20,10 +20,25 @@
#ifdef CONFIG_BCM47XX
#include <asm/paccess.h>
#else
#define BCM4710_DUMMY_RREG()
---- a/arch/mips/mm/tlbex.c 2008-12-03 17:39:32.000000000 +0100
-+++ b/arch/mips/mm/tlbex.c 2008-12-03 17:11:43.000000000 +0100
-@@ -547,6 +547,9 @@
+--- a/arch/mips/mm/tlbex.c
++++ b/arch/mips/mm/tlbex.c
+@@ -544,6 +544,9 @@ build_get_pgde32(u32 **p, unsigned int t
#endif
uasm_i_addu(p, ptr, tmp, ptr);
#else
UASM_i_LA_mostly(p, ptr, pgdc);
#endif
uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */
-@@ -677,12 +680,12 @@
+@@ -674,12 +677,12 @@ static void __cpuinit build_r4000_tlb_re
/* No need for uasm_i_nop */
}
build_get_pgde32(&p, K0, K1); /* get pgd in K1 */
#endif
-@@ -690,6 +693,9 @@
+@@ -687,6 +690,9 @@ static void __cpuinit build_r4000_tlb_re
build_update_entries(&p, K0, K1);
build_tlb_write_entry(&p, &l, &r, tlb_random);
uasm_l_leave(&l, p);
uasm_i_eret(&p); /* return from trap */
#ifdef CONFIG_64BIT
-@@ -1087,12 +1093,12 @@
+@@ -1084,12 +1090,12 @@ build_r4000_tlbchange_handler_head(u32 *
struct uasm_reloc **r, unsigned int pte,
unsigned int ptr)
{
build_get_pgde32(p, pte, ptr); /* get pgd in ptr */
#endif
-@@ -1120,6 +1126,9 @@
+@@ -1117,6 +1123,9 @@ build_r4000_tlbchange_handler_tail(u32 *
build_update_entries(p, tmp, ptr);
build_tlb_write_entry(p, l, r, tlb_indexed);
uasm_l_leave(l, *p);
uasm_i_eret(p); /* return from trap */
#ifdef CONFIG_64BIT
---- a/arch/mips/kernel/genex.S 2008-11-16 15:33:32.000000000 +0100
-+++ b/arch/mips/kernel/genex.S 2008-12-05 07:14:52.000000000 +0100
-@@ -21,6 +21,19 @@
- #include <asm/war.h>
+--- a/arch/mips/kernel/genex.S
++++ b/arch/mips/kernel/genex.S
+@@ -22,6 +22,19 @@
#include <asm/page.h>
+ #include <asm/thread_info.h>
+#ifdef CONFIG_BCM47XX
+# ifdef eret
#define PANIC_PIC(msg) \
.set push; \
.set reorder; \
-@@ -53,7 +66,6 @@
+@@ -54,7 +67,6 @@ NESTED(except_vec3_generic, 0, sp)
.set noat
#ifdef CONFIG_BCM47XX
nop
#endif
#if R5432_CP0_INTERRUPT_WAR
mfc0 k0, CP0_INDEX
-@@ -78,6 +90,9 @@
+@@ -79,6 +91,9 @@ NESTED(except_vec3_r4000, 0, sp)
.set push
.set mips3
.set noat
-Index: linux-2.6.30.4/arch/mips/Makefile
-===================================================================
---- linux-2.6.30.4.orig/arch/mips/Makefile 2009-08-06 16:02:25.000000000 +0200
-+++ linux-2.6.30.4/arch/mips/Makefile 2009-08-06 16:02:37.000000000 +0200
-@@ -83,7 +83,7 @@
+--- a/arch/mips/Makefile
++++ b/arch/mips/Makefile
+@@ -83,7 +83,7 @@ all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
cflags-y += -msoft-float
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
cflags-y += -ffreestanding
-Index: linux-2.6.30.4/arch/mips/include/asm/module.h
-===================================================================
---- linux-2.6.30.4.orig/arch/mips/include/asm/module.h 2009-08-06 16:02:25.000000000 +0200
-+++ linux-2.6.30.4/arch/mips/include/asm/module.h 2009-08-06 16:02:37.000000000 +0200
-@@ -9,6 +9,11 @@
+--- a/arch/mips/include/asm/module.h
++++ b/arch/mips/include/asm/module.h
+@@ -9,6 +9,11 @@ struct mod_arch_specific {
struct list_head dbe_list;
const struct exception_table_entry *dbe_start;
const struct exception_table_entry *dbe_end;
};
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */
-Index: linux-2.6.30.4/arch/mips/kernel/module.c
-===================================================================
---- linux-2.6.30.4.orig/arch/mips/kernel/module.c 2009-08-06 16:02:36.000000000 +0200
-+++ linux-2.6.30.4/arch/mips/kernel/module.c 2009-08-06 16:03:15.000000000 +0200
-@@ -43,6 +43,116 @@
+--- a/arch/mips/kernel/module.c
++++ b/arch/mips/kernel/module.c
+@@ -43,6 +43,116 @@ static struct mips_hi16 *mips_hi16_list;
static LIST_HEAD(dbe_list);
static DEFINE_SPINLOCK(dbe_lock);
void *module_alloc(unsigned long size)
{
#ifdef MODULE_START
-@@ -58,16 +168,45 @@
+@@ -58,16 +168,45 @@ void *module_alloc(unsigned long size)
return __vmalloc_area(area, GFP_KERNEL, PAGE_KERNEL);
#else
/* FIXME: If module_region == mod->init_region, trim exception
table entries. */
}
-@@ -75,6 +214,24 @@
+@@ -75,6 +214,24 @@ void module_free(struct module *mod, voi
int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs,
char *secstrings, struct module *mod)
{
return 0;
}
-@@ -97,27 +254,41 @@
+@@ -97,27 +254,41 @@ static int apply_r_mips_32_rela(struct m
return 0;
}
{
if (v % 4) {
printk(KERN_ERR "module %s: dangerous relocation\n", me->name);
-@@ -125,17 +296,31 @@
+@@ -125,17 +296,31 @@ static int apply_r_mips_26_rela(struct m
}
if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
{
struct mips_hi16 *n;
-@@ -400,11 +585,23 @@
+@@ -400,11 +585,23 @@ int module_finalize(const Elf_Ehdr *hdr,
list_add(&me->arch.dbe_list, &dbe_list);
spin_unlock_irq(&dbe_lock);
}