Commit a21b0696 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  [MIPS] Fix wrong checksum calculation on 64-bit MIPS
  [MIPS] VPE loader: Initialize lists before they're actually being used ...
  [MIPS] Fix reported amount of freed memory - it's in kB not bytes
  [MIPS] vr41xx: need one more nop with mtc0_tlbw_hazard()
  [MIPS] SMTC: Fix module build by exporting symbol
  [MIPS] SMTC: Fix TLB sizing bug for TLB of 64 >= entries
  [MIPS] Fix APM build
  [MIPS] There is no __GNUC_MAJOR__
parents 717d44e8 66218da2
...@@ -623,7 +623,7 @@ LDFLAGS += -m $(ld-emul) ...@@ -623,7 +623,7 @@ LDFLAGS += -m $(ld-emul)
ifdef CONFIG_MIPS ifdef CONFIG_MIPS
CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \ CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \
egrep -vw '__GNUC_(MAJOR|MINOR|PATCHLEVEL)__' | \ egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/") sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
ifdef CONFIG_64BIT ifdef CONFIG_64BIT
CHECKFLAGS += -m64 CHECKFLAGS += -m64
......
...@@ -122,7 +122,7 @@ unsigned long __init prom_free_prom_memory(void) ...@@ -122,7 +122,7 @@ unsigned long __init prom_free_prom_memory(void)
addr += PAGE_SIZE; addr += PAGE_SIZE;
} }
printk("Freeing unused PROM memory: %ldk freed\n", printk("Freeing unused PROM memory: %ldkb freed\n",
(end - PAGE_SIZE) >> 10); (end - PAGE_SIZE) >> 10);
return end - PAGE_SIZE; return end - PAGE_SIZE;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/module.h>
#include <asm/cpu.h> #include <asm/cpu.h>
#include <asm/processor.h> #include <asm/processor.h>
...@@ -270,9 +271,12 @@ void smtc_configure_tlb(void) ...@@ -270,9 +271,12 @@ void smtc_configure_tlb(void)
* of their initialization in smtc_cpu_setup(). * of their initialization in smtc_cpu_setup().
*/ */
tlbsiz = tlbsiz & 0x3f; /* MIPS32 limits TLB indices to 64 */ /* MIPS32 limits TLB indices to 64 */
cpu_data[0].tlbsize = tlbsiz; if (tlbsiz > 64)
tlbsiz = 64;
cpu_data[0].tlbsize = current_cpu_data.tlbsize = tlbsiz;
smtc_status |= SMTC_TLB_SHARED; smtc_status |= SMTC_TLB_SHARED;
local_flush_tlb_all();
printk("TLB of %d entry pairs shared by %d VPEs\n", printk("TLB of %d entry pairs shared by %d VPEs\n",
tlbsiz, vpes); tlbsiz, vpes);
...@@ -1044,6 +1048,8 @@ void smtc_ipi_replay(void) ...@@ -1044,6 +1048,8 @@ void smtc_ipi_replay(void)
} }
} }
EXPORT_SYMBOL(smtc_ipi_replay);
void smtc_idle_loop_hook(void) void smtc_idle_loop_hook(void)
{ {
#ifdef SMTC_IDLE_HOOK_DEBUG #ifdef SMTC_IDLE_HOOK_DEBUG
......
...@@ -139,13 +139,16 @@ struct tc { ...@@ -139,13 +139,16 @@ struct tc {
struct list_head list; struct list_head list;
}; };
struct vpecontrol_ { struct {
/* Virtual processing elements */ /* Virtual processing elements */
struct list_head vpe_list; struct list_head vpe_list;
/* Thread contexts */ /* Thread contexts */
struct list_head tc_list; struct list_head tc_list;
} vpecontrol; } vpecontrol = {
.vpe_list = LIST_HEAD_INIT(vpecontrol.vpe_list),
.tc_list = LIST_HEAD_INIT(vpecontrol.tc_list)
};
static void release_progmem(void *ptr); static void release_progmem(void *ptr);
/* static __attribute_used__ void dump_vpe(struct vpe * v); */ /* static __attribute_used__ void dump_vpe(struct vpe * v); */
...@@ -1388,8 +1391,6 @@ static int __init vpe_module_init(void) ...@@ -1388,8 +1391,6 @@ static int __init vpe_module_init(void)
/* dump_mtregs(); */ /* dump_mtregs(); */
INIT_LIST_HEAD(&vpecontrol.vpe_list);
INIT_LIST_HEAD(&vpecontrol.tc_list);
val = read_c0_mvpconf0(); val = read_c0_mvpconf0();
for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) { for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) {
......
...@@ -501,7 +501,8 @@ void free_initmem(void) ...@@ -501,7 +501,8 @@ void free_initmem(void)
freed = prom_free_prom_memory(); freed = prom_free_prom_memory();
if (freed) if (freed)
printk(KERN_INFO "Freeing firmware memory: %ldk freed\n",freed); printk(KERN_INFO "Freeing firmware memory: %ldkb freed\n",
freed >> 10);
free_init_pages("unused kernel memory", free_init_pages("unused kernel memory",
__pa_symbol(&__init_begin), __pa_symbol(&__init_begin),
......
...@@ -159,7 +159,8 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr, ...@@ -159,7 +159,8 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr,
#endif #endif
" .set pop" " .set pop"
: "=r" (sum) : "=r" (sum)
: "0" (daddr), "r"(saddr), : "0" ((__force unsigned long)daddr),
"r" ((__force unsigned long)saddr),
#ifdef __MIPSEL__ #ifdef __MIPSEL__
"r" ((proto + len) << 8), "r" ((proto + len) << 8),
#else #else
......
...@@ -157,7 +157,7 @@ ASMMACRO(back_to_back_c0_hazard, ...@@ -157,7 +157,7 @@ ASMMACRO(back_to_back_c0_hazard,
* processors. * processors.
*/ */
ASMMACRO(mtc0_tlbw_hazard, ASMMACRO(mtc0_tlbw_hazard,
nop nop; nop
) )
ASMMACRO(tlbw_use_hazard, ASMMACRO(tlbw_use_hazard,
nop; nop; nop nop; nop; nop
......
...@@ -118,6 +118,7 @@ register struct thread_info *__current_thread_info __asm__("$28"); ...@@ -118,6 +118,7 @@ register struct thread_info *__current_thread_info __asm__("$28");
#define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */
#define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */
#define TIF_MEMDIE 18 #define TIF_MEMDIE 18
#define TIF_FREEZE 19
#define TIF_SYSCALL_TRACE 31 /* syscall trace active */ #define TIF_SYSCALL_TRACE 31 /* syscall trace active */
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
...@@ -129,6 +130,7 @@ register struct thread_info *__current_thread_info __asm__("$28"); ...@@ -129,6 +130,7 @@ register struct thread_info *__current_thread_info __asm__("$28");
#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
#define _TIF_USEDFPU (1<<TIF_USEDFPU) #define _TIF_USEDFPU (1<<TIF_USEDFPU)
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
#define _TIF_FREEZE (1<<TIF_FREEZE)
/* work to do on interrupt/exception return */ /* work to do on interrupt/exception return */
#define _TIF_WORK_MASK (0x0000ffef & ~_TIF_SECCOMP) #define _TIF_WORK_MASK (0x0000ffef & ~_TIF_SECCOMP)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment