]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 31 May 2007 16:15:42 +0000 (09:15 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 31 May 2007 16:15:42 +0000 (09:15 -0700)
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6:
  sh: support older gcc's
  sh: trivial build cleanups.
  sh: Fix vsyscall build failure.
  sh: Trivial fix for dma-api compile failure.
  sh: Fix pcrel too far for in_nmi label.
  sh: section mismatch fixes for system timer.

14 files changed:
arch/sh/Makefile
arch/sh/drivers/dma/dma-api.c
arch/sh/kernel/cf-enabler.c
arch/sh/kernel/cpu/sh3/entry.S
arch/sh/kernel/cpu/sh4/probe.c
arch/sh/kernel/smp.c
arch/sh/kernel/timers/timer.c
arch/sh/kernel/vsyscall/vsyscall.c
include/asm-sh/cpu-sh4/freq.h
include/asm-sh/dma.h
include/asm-sh/io.h
include/asm-sh/smp.h
include/asm-sh/spinlock.h
include/asm-sh/spinlock_types.h

index 7b1122417050a8cd01c991f876398e98f86506f5..883b03b040c455c471c704e605c62e8163c607e1 100644 (file)
@@ -39,7 +39,7 @@ cflags-$(CONFIG_CPU_SH2A)             := -m2a $(call cc-option,-m2a-nofpu,)
 cflags-$(CONFIG_CPU_SH3)               := -m3
 cflags-$(CONFIG_CPU_SH4)               := -m4 \
        $(call cc-option,-mno-implicit-fp,-m4-nofpu)
-cflags-$(CONFIG_CPU_SH4A)              := -m4a $(call cc-option,-m4a-nofpu,)
+cflags-$(CONFIG_CPU_SH4A)              := $(call cc-option,-m4a,) $(call cc-option,-m4a-nofpu,)
 
 cflags-$(CONFIG_CPU_BIG_ENDIAN)                += -mb
 cflags-$(CONFIG_CPU_LITTLE_ENDIAN)     += -ml
index 8057a27a1bc6bb760d81ce01ee800b7638ceebaf..cf8e119943306abd598cd1c761c7ce118891cb14 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/list.h>
 #include <linux/platform_device.h>
 #include <linux/mm.h>
+#include <linux/sched.h>
 #include <asm/dma.h>
 
 DEFINE_SPINLOCK(dma_spin_lock);
index 849a9e191391dee23ea1d4c48a85b7c541471513..ebc73b85094a9b9b63a3667556c077c432e0e624 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/init.h>
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
+#include <linux/interrupt.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 
@@ -149,6 +150,11 @@ static int __init cf_init_se(void)
        ctrl_outb(0x42, PA_MRSHPC_MW2 + 0x200);
        return 0;
 }
+#else
+static int __init cf_init_se(void)
+{
+       return -1;
+}
 #endif
 
 int __init cf_init(void)
index 832c0b4a1e6ca2fe78583e57af93ebd44f78d7bc..659cc081e5e701f5d155bf72e9cd297f93a42524 100644 (file)
@@ -320,6 +320,7 @@ skip_restore:
 
        .align  2
 5:     .long   0x00001000      ! DSP
+6:     .long   in_nmi
 7:     .long   0x30000000
 
 ! common exception handler
index 8cd04904c77a02c9fc6dfff2f28756fc8ca8f282..fab2eb07196b2538ac24bf5b05733df66fb1ee73 100644 (file)
@@ -12,6 +12,7 @@
  */
 #include <linux/init.h>
 #include <linux/io.h>
+#include <linux/smp.h>
 #include <asm/processor.h>
 #include <asm/cache.h>
 
index dbebaddcfe394974686c833a39f837d562720fa5..283e1425ced57046d63cd850317f1c6b5e8dd766 100644 (file)
@@ -10,6 +10,8 @@
  * Free Software Foundation; either version 2 of the License, or (at your
  * option) any later version.
  */
+
+#include <linux/err.h>
 #include <linux/cache.h>
 #include <linux/cpumask.h>
 #include <linux/delay.h>
index a6bcc913d25e8687f96ad783220fbdfaa64f111b..4e7e747d1b696c59a16016cb42aedbe516ae734b 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/string.h>
 #include <asm/timer.h>
 
-static struct sys_timer *sys_timers[] __initdata = {
+static struct sys_timer *sys_timers[] = {
 #ifdef CONFIG_SH_TMU
        &tmu_timer,
 #endif
@@ -26,7 +26,7 @@ static struct sys_timer *sys_timers[] __initdata = {
        NULL,
 };
 
-static char timer_override[10] __initdata;
+static char timer_override[10];
 static int __init timer_setup(char *str)
 {
        if (str)
@@ -53,4 +53,3 @@ struct sys_timer *get_sys_timer(void)
 
        return NULL;
 }
-
index e146bafcd14fb11459e60f1db77549502b22644e..2aa9438361bcb99a75ac7369dd0c1c2ea8ba5997 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/gfp.h>
 #include <linux/module.h>
 #include <linux/elf.h>
+#include <linux/sched.h>
 
 /*
  * Should the kernel map a VDSO page into processes and pass its
index 86564e7a26aef3efe8fc827168df191997cbde47..39f41fcd509d78dbc02123bf8ff23fd769f09354 100644 (file)
@@ -24,6 +24,9 @@
 #define FRQMR1                 0xffc80014
 #else
 #define FRQCR                  0xffc00000
+#define FRQCR_PSTBY            0x0200
+#define FRQCR_PLLEN            0x0400
+#define FRQCR_CKOEN            0x0800
 #endif
 #define MIN_DIVISOR_NR         0
 #define MAX_DIVISOR_NR         3
index faf3051cd4290fd942c0c67d00fe3035607694dc..6034d4a29e73151434597f0ee1fd35d855c0738f 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <linux/spinlock.h>
 #include <linux/wait.h>
+#include <linux/sched.h>
 #include <linux/sysdev.h>
 #include <asm/cpu/dma.h>
 
index a0e55b09e4fd773b30d9acf30e2e89ed60f72340..aa80930ce8e4ccbc089132c8645309eedd9f7b1e 100644 (file)
@@ -116,13 +116,13 @@ void __raw_readsl(unsigned long addr, void *data, int longlen);
  * redefined by userlevel programs.
  */
 #ifdef __readb
-# define readb(a)      ({ unsigned long r_ = __raw_readb(a); mb(); r_; })
+# define readb(a)      ({ unsigned int r_ = __raw_readb(a); mb(); r_; })
 #endif
 #ifdef __raw_readw
-# define readw(a)      ({ unsigned long r_ = __raw_readw(a); mb(); r_; })
+# define readw(a)      ({ unsigned int r_ = __raw_readw(a); mb(); r_; })
 #endif
 #ifdef __raw_readl
-# define readl(a)      ({ unsigned long r_ = __raw_readl(a); mb(); r_; })
+# define readl(a)      ({ unsigned int r_ = __raw_readl(a); mb(); r_; })
 #endif
 
 #ifdef __raw_writeb
index 71ecddf70db382f7153b6f6888eec216056914b9..caa7b93f1bce4f2276e142fff92b081f92425855 100644 (file)
@@ -15,7 +15,7 @@
 
 #ifdef CONFIG_SMP
 
-#include <asm/spinlock.h>
+#include <linux/spinlock.h>
 #include <asm/atomic.h>
 #include <asm/current.h>
 
index 2586eef07d57214ec977f50b818d61c1c0fff9ed..92f6e2008b2e00963a4fc6a7da2bea95d7b82594 100644 (file)
@@ -11,6 +11,7 @@
 #define __ASM_SH_SPINLOCK_H
 
 #include <asm/atomic.h>
+#include <asm/spinlock_types.h>
 
 /*
  * Your basic SMP spinlocks, allowing only a single CPU anywhere
@@ -42,7 +43,7 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock)
 
 static inline void __raw_spin_unlock(raw_spinlock_t *lock)
 {
-       assert_spin_locked(lock);
+       //assert_spin_locked(lock);
 
        lock->lock = 0;
 }
@@ -88,6 +89,11 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw)
        __raw_spin_unlock(&rw->lock);
 }
 
+static inline int __raw_write_can_lock(raw_rwlock_t *rw)
+{
+       return (atomic_read(&rw->counter) == RW_LOCK_BIAS);
+}
+
 static inline int __raw_read_trylock(raw_rwlock_t *lock)
 {
        atomic_t *count = (atomic_t*)lock;
index 8c41b6c3aac87adc4fbd73d5320b95e7592c6b18..5c58134f2c4e35a31a402f69c3368e2a9033c326 100644 (file)
@@ -9,7 +9,9 @@ typedef struct {
        volatile unsigned long lock;
 } raw_spinlock_t;
 
-#define __SPIN_LOCK_UNLOCKED           { 0 }
+#define __RAW_SPIN_LOCK_UNLOCKED       { 1 }
+
+#include <asm/atomic.h>
 
 typedef struct {
        raw_spinlock_t lock;