Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 24 Jan 2007 20:31:28 +0000 (12:31 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 24 Jan 2007 20:31:28 +0000 (12:31 -0800)
* '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__

arch/mips/Makefile
arch/mips/dec/prom/memory.c
arch/mips/kernel/smtc.c
arch/mips/kernel/vpe.c
arch/mips/mm/init.c
include/asm-mips/checksum.h
include/asm-mips/hazards.h
include/asm-mips/thread_info.h

index d1b026a0337d843ef074b6036f02de7e73fc5d8b..c68b5d3e5d180c639e964df00557b60d43f3f3bd 100644 (file)
@@ -623,7 +623,7 @@ LDFLAGS                     += -m $(ld-emul)
 
 ifdef CONFIG_MIPS
 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/$$/'/")
 ifdef CONFIG_64BIT
 CHECKFLAGS             += -m64
index 3027ce782797541fba21b43e6b8ded4ce6bcbe7a..3aa01d268f2d4f45398bd1ece332c0ecfa4d39ce 100644 (file)
@@ -122,7 +122,7 @@ unsigned long __init prom_free_prom_memory(void)
                addr += PAGE_SIZE;
        }
 
-       printk("Freeing unused PROM memory: %ldk freed\n",
+       printk("Freeing unused PROM memory: %ldkb freed\n",
               (end - PAGE_SIZE) >> 10);
 
        return end - PAGE_SIZE;
index 44238ab2fc99ff803836e263f42e7a2860fd3996..6a857bf030b070aee2d9861e727cfd3605e62200 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/sched.h>
 #include <linux/cpumask.h>
 #include <linux/interrupt.h>
+#include <linux/module.h>
 
 #include <asm/cpu.h>
 #include <asm/processor.h>
@@ -270,9 +271,12 @@ void smtc_configure_tlb(void)
                 * of their initialization in smtc_cpu_setup().
                 */
 
-               tlbsiz = tlbsiz & 0x3f; /* MIPS32 limits TLB indices to 64 */
-               cpu_data[0].tlbsize = tlbsiz;
+               /* MIPS32 limits TLB indices to 64 */
+               if (tlbsiz > 64)
+                       tlbsiz = 64;
+               cpu_data[0].tlbsize = current_cpu_data.tlbsize = tlbsiz;
                smtc_status |= SMTC_TLB_SHARED;
+               local_flush_tlb_all();
 
                printk("TLB of %d entry pairs shared by %d VPEs\n",
                        tlbsiz, vpes);
@@ -1044,6 +1048,8 @@ void smtc_ipi_replay(void)
        }
 }
 
+EXPORT_SYMBOL(smtc_ipi_replay);
+
 void smtc_idle_loop_hook(void)
 {
 #ifdef SMTC_IDLE_HOOK_DEBUG
index 666bef484dcbc613559fc2d887c30fc6cc457390..458fccf87c54ec436adb6bc9fb43c3bc84fbef32 100644 (file)
@@ -139,13 +139,16 @@ struct tc {
        struct list_head list;
 };
 
-struct vpecontrol_ {
+struct {
        /* Virtual processing elements */
        struct list_head vpe_list;
 
        /* Thread contexts */
        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 __attribute_used__ void dump_vpe(struct vpe * v); */
@@ -1388,8 +1391,6 @@ static int __init vpe_module_init(void)
 
        /* dump_mtregs(); */
 
-       INIT_LIST_HEAD(&vpecontrol.vpe_list);
-       INIT_LIST_HEAD(&vpecontrol.tc_list);
 
        val = read_c0_mvpconf0();
        for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) {
index 30245c09d0258e224475b0ceeb9e50d7c6c797a1..49065c133ebf4987d7f48666e90b0bac3076308c 100644 (file)
@@ -501,7 +501,8 @@ void free_initmem(void)
 
        freed = prom_free_prom_memory();
        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",
                        __pa_symbol(&__init_begin),
index 24cdcc6eaab887b5adb08772ad0c2d53abbba11c..20a81e1548f5c91419b1077c75e802e35871af44 100644 (file)
@@ -159,7 +159,8 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr,
 #endif
        "       .set    pop"
        : "=r" (sum)
-       : "0" (daddr), "r"(saddr),
+       : "0" ((__force unsigned long)daddr),
+         "r" ((__force unsigned long)saddr),
 #ifdef __MIPSEL__
          "r" ((proto + len) << 8),
 #else
index 0fe02945feba0b8a18868126a99d977558294d33..50073157a617dfcd0583bb8cfde6621285953736 100644 (file)
@@ -157,7 +157,7 @@ ASMMACRO(back_to_back_c0_hazard,
  * processors.
  */
 ASMMACRO(mtc0_tlbw_hazard,
-       nop
+       nop; nop
        )
 ASMMACRO(tlbw_use_hazard,
        nop; nop; nop
index e475c45ea263e57d34409137429bb63f982d9e83..fbcda82044738b34674f8630aab3905dc2a7bf44 100644 (file)
@@ -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_POLLING_NRFLAG     17      /* true if poll_idle() is polling TIF_NEED_RESCHED */
 #define TIF_MEMDIE             18
+#define TIF_FREEZE             19
 #define TIF_SYSCALL_TRACE      31      /* syscall trace active */
 
 #define _TIF_SYSCALL_TRACE     (1<<TIF_SYSCALL_TRACE)
@@ -129,6 +130,7 @@ register struct thread_info *__current_thread_info __asm__("$28");
 #define _TIF_RESTORE_SIGMASK   (1<<TIF_RESTORE_SIGMASK)
 #define _TIF_USEDFPU           (1<<TIF_USEDFPU)
 #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
+#define _TIF_FREEZE            (1<<TIF_FREEZE)
 
 /* work to do on interrupt/exception return */
 #define _TIF_WORK_MASK         (0x0000ffef & ~_TIF_SECCOMP)