aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-03 11:22:06 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-03 11:22:06 -0400
commitcf0223503e6198292cdcc864e01eeb5fe7490752 (patch)
tree5ed99ae5fc7a67ec19df19f4b46b0c04d97db174 /arch
parent3f8ddb032afa729d4bad1bf2965d3ec068de6b72 (diff)
parente857bfd4604a3a4edaf9c7038db880d9f78aecbd (diff)
Merge branch 'sh-latest' of git://github.com/pmundt/linux-sh
* 'sh-latest' of git://github.com/pmundt/linux-sh: sh: Add default uImage rule for sh7757lcr sh: modify the asm/sh_eth.h to linux/sh_eth.h in sh7757lcr sh: userimask.c needs linux/stat.h sh: pfc: Add GPIO IRQ support sh: modify the asm/sh_eth.h to linux/sh_eth.h in some boards sh: pfc: Remove unused gpio_in_use member sh: add parameters for EHCI and RIIC in clock-sh7757.c sh: kexec: Add PHYSICAL_START SH: irq: Remove IRQF_DISABLED sh: pfc: get_config_reg() shift clean up sh: intc: Add IRQ trigger bit field check sh: drop unused Kconfig symbol sh: Fix implicit declaration of function numa_node_id sh: kexec: Register crashk_res sh: ecovec: add renesas_usbhs DMAEngine support
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/Kconfig17
-rw-r--r--arch/sh/Makefile1
-rw-r--r--arch/sh/boards/board-espt.c2
-rw-r--r--arch/sh/boards/board-secureedge5410.c3
-rw-r--r--arch/sh/boards/board-sh7757lcr.c2
-rw-r--r--arch/sh/boards/mach-cayman/irq.c2
-rw-r--r--arch/sh/boards/mach-ecovec24/setup.c6
-rw-r--r--arch/sh/boards/mach-hp6xx/hp6xx_apm.c2
-rw-r--r--arch/sh/boards/mach-se/7724/setup.c2
-rw-r--r--arch/sh/boards/mach-sh7763rdp/setup.c2
-rw-r--r--arch/sh/boot/Makefile6
-rw-r--r--arch/sh/drivers/dma/dma-g2.c2
-rw-r--r--arch/sh/drivers/dma/dma-pvr2.c1
-rw-r--r--arch/sh/drivers/dma/dma-sh.c4
-rw-r--r--arch/sh/drivers/dma/dmabrg.c6
-rw-r--r--arch/sh/drivers/pci/pci-sh5.c4
-rw-r--r--arch/sh/drivers/pci/pci-sh7780.c2
-rw-r--r--arch/sh/drivers/push-switch.c2
-rw-r--r--arch/sh/include/asm/page.h10
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-sh7757.c10
-rw-r--r--arch/sh/kernel/cpu/sh4a/smp-shx3.c2
-rw-r--r--arch/sh/kernel/setup.c9
-rw-r--r--arch/sh/kernel/topology.c1
-rw-r--r--arch/sh/kernel/vmlinux.lds.S2
-rw-r--r--arch/sh/mm/init.c8
25 files changed, 70 insertions, 38 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index ff9177c8f643..5629e2099130 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -101,10 +101,6 @@ config GENERIC_LOCKBREAK
101 def_bool y 101 def_bool y
102 depends on SMP && PREEMPT 102 depends on SMP && PREEMPT
103 103
104config SYS_SUPPORTS_PM
105 bool
106 depends on !SMP
107
108config ARCH_SUSPEND_POSSIBLE 104config ARCH_SUSPEND_POSSIBLE
109 def_bool n 105 def_bool n
110 106
@@ -649,7 +645,7 @@ config CRASH_DUMP
649 a specially reserved region and then later executed after 645 a specially reserved region and then later executed after
650 a crash by kdump/kexec. The crash dump kernel must be compiled 646 a crash by kdump/kexec. The crash dump kernel must be compiled
651 to a memory address not used by the main kernel using 647 to a memory address not used by the main kernel using
652 MEMORY_START. 648 PHYSICAL_START.
653 649
654 For more details see Documentation/kdump/kdump.txt 650 For more details see Documentation/kdump/kdump.txt
655 651
@@ -660,6 +656,17 @@ config KEXEC_JUMP
660 Jump between original kernel and kexeced kernel and invoke 656 Jump between original kernel and kexeced kernel and invoke
661 code via KEXEC 657 code via KEXEC
662 658
659config PHYSICAL_START
660 hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
661 default MEMORY_START
662 ---help---
663 This gives the physical address where the kernel is loaded
664 and is ordinarily the same as MEMORY_START.
665
666 Different values are primarily used in the case of kexec on panic
667 where the fail safe kernel needs to run at a different address
668 than the panic-ed kernel.
669
663config SECCOMP 670config SECCOMP
664 bool "Enable seccomp to safely compute untrusted bytecode" 671 bool "Enable seccomp to safely compute untrusted bytecode"
665 depends on PROC_FS 672 depends on PROC_FS
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 99385d0b3f3b..3fc0f413777c 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -80,6 +80,7 @@ defaultimage-$(CONFIG_SH_RSK) := uImage
80defaultimage-$(CONFIG_SH_URQUELL) := uImage 80defaultimage-$(CONFIG_SH_URQUELL) := uImage
81defaultimage-$(CONFIG_SH_MIGOR) := uImage 81defaultimage-$(CONFIG_SH_MIGOR) := uImage
82defaultimage-$(CONFIG_SH_AP325RXA) := uImage 82defaultimage-$(CONFIG_SH_AP325RXA) := uImage
83defaultimage-$(CONFIG_SH_SH7757LCR) := uImage
83defaultimage-$(CONFIG_SH_7724_SOLUTION_ENGINE) := uImage 84defaultimage-$(CONFIG_SH_7724_SOLUTION_ENGINE) := uImage
84defaultimage-$(CONFIG_SH_7206_SOLUTION_ENGINE) := vmlinux 85defaultimage-$(CONFIG_SH_7206_SOLUTION_ENGINE) := vmlinux
85defaultimage-$(CONFIG_SH_7619_SOLUTION_ENGINE) := vmlinux 86defaultimage-$(CONFIG_SH_7619_SOLUTION_ENGINE) := vmlinux
diff --git a/arch/sh/boards/board-espt.c b/arch/sh/boards/board-espt.c
index 9da92ac36533..b3ae9d38cbc0 100644
--- a/arch/sh/boards/board-espt.c
+++ b/arch/sh/boards/board-espt.c
@@ -13,9 +13,9 @@
13#include <linux/interrupt.h> 13#include <linux/interrupt.h>
14#include <linux/mtd/physmap.h> 14#include <linux/mtd/physmap.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/sh_eth.h>
16#include <asm/machvec.h> 17#include <asm/machvec.h>
17#include <asm/sizes.h> 18#include <asm/sizes.h>
18#include <asm/sh_eth.h>
19 19
20/* NOR Flash */ 20/* NOR Flash */
21static struct mtd_partition espt_nor_flash_partitions[] = { 21static struct mtd_partition espt_nor_flash_partitions[] = {
diff --git a/arch/sh/boards/board-secureedge5410.c b/arch/sh/boards/board-secureedge5410.c
index f968f17891a4..03820c3c93d4 100644
--- a/arch/sh/boards/board-secureedge5410.c
+++ b/arch/sh/boards/board-secureedge5410.c
@@ -41,8 +41,7 @@ static int __init eraseconfig_init(void)
41 printk("SnapGear: EraseConfig init\n"); 41 printk("SnapGear: EraseConfig init\n");
42 42
43 /* Setup "EraseConfig" switch on external IRQ 0 */ 43 /* Setup "EraseConfig" switch on external IRQ 0 */
44 if (request_irq(irq, eraseconfig_interrupt, IRQF_DISABLED, 44 if (request_irq(irq, eraseconfig_interrupt, 0, "Erase Config", NULL))
45 "Erase Config", NULL))
46 printk("SnapGear: failed to register IRQ%d for Reset witch\n", 45 printk("SnapGear: failed to register IRQ%d for Reset witch\n",
47 irq); 46 irq);
48 else 47 else
diff --git a/arch/sh/boards/board-sh7757lcr.c b/arch/sh/boards/board-sh7757lcr.c
index fa2a208ec6cb..ec8c84c14b17 100644
--- a/arch/sh/boards/board-sh7757lcr.c
+++ b/arch/sh/boards/board-sh7757lcr.c
@@ -18,8 +18,8 @@
18#include <linux/mmc/host.h> 18#include <linux/mmc/host.h>
19#include <linux/mmc/sh_mmcif.h> 19#include <linux/mmc/sh_mmcif.h>
20#include <linux/mmc/sh_mobile_sdhi.h> 20#include <linux/mmc/sh_mobile_sdhi.h>
21#include <linux/sh_eth.h>
21#include <cpu/sh7757.h> 22#include <cpu/sh7757.h>
22#include <asm/sh_eth.h>
23#include <asm/heartbeat.h> 23#include <asm/heartbeat.h>
24 24
25static struct resource heartbeat_resource = { 25static struct resource heartbeat_resource = {
diff --git a/arch/sh/boards/mach-cayman/irq.c b/arch/sh/boards/mach-cayman/irq.c
index 311bcebdbd07..724e8b7271f4 100644
--- a/arch/sh/boards/mach-cayman/irq.c
+++ b/arch/sh/boards/mach-cayman/irq.c
@@ -46,13 +46,11 @@ static irqreturn_t cayman_interrupt_pci2(int irq, void *dev_id)
46static struct irqaction cayman_action_smsc = { 46static struct irqaction cayman_action_smsc = {
47 .name = "Cayman SMSC Mux", 47 .name = "Cayman SMSC Mux",
48 .handler = cayman_interrupt_smsc, 48 .handler = cayman_interrupt_smsc,
49 .flags = IRQF_DISABLED,
50}; 49};
51 50
52static struct irqaction cayman_action_pci2 = { 51static struct irqaction cayman_action_pci2 = {
53 .name = "Cayman PCI2 Mux", 52 .name = "Cayman PCI2 Mux",
54 .handler = cayman_interrupt_pci2, 53 .handler = cayman_interrupt_pci2,
55 .flags = IRQF_DISABLED,
56}; 54};
57 55
58static void enable_cayman_irq(struct irq_data *data) 56static void enable_cayman_irq(struct irq_data *data)
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index b24d69d509e7..92ddce4b3456 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -28,13 +28,13 @@
28#include <linux/spi/mmc_spi.h> 28#include <linux/spi/mmc_spi.h>
29#include <linux/input.h> 29#include <linux/input.h>
30#include <linux/input/sh_keysc.h> 30#include <linux/input/sh_keysc.h>
31#include <linux/sh_eth.h>
31#include <video/sh_mobile_lcdc.h> 32#include <video/sh_mobile_lcdc.h>
32#include <sound/sh_fsi.h> 33#include <sound/sh_fsi.h>
33#include <media/sh_mobile_ceu.h> 34#include <media/sh_mobile_ceu.h>
34#include <media/tw9910.h> 35#include <media/tw9910.h>
35#include <media/mt9t112.h> 36#include <media/mt9t112.h>
36#include <asm/heartbeat.h> 37#include <asm/heartbeat.h>
37#include <asm/sh_eth.h>
38#include <asm/clock.h> 38#include <asm/clock.h>
39#include <asm/suspend.h> 39#include <asm/suspend.h>
40#include <cpu/sh7724.h> 40#include <cpu/sh7724.h>
@@ -248,6 +248,10 @@ static struct renesas_usbhs_platform_info usbhs_info = {
248 .driver_param = { 248 .driver_param = {
249 .buswait_bwait = 4, 249 .buswait_bwait = 4,
250 .detection_delay = 5, 250 .detection_delay = 5,
251 .d0_tx_id = SHDMA_SLAVE_USB1D0_TX,
252 .d0_rx_id = SHDMA_SLAVE_USB1D0_RX,
253 .d1_tx_id = SHDMA_SLAVE_USB1D1_TX,
254 .d1_rx_id = SHDMA_SLAVE_USB1D1_RX,
251 }, 255 },
252}; 256};
253 257
diff --git a/arch/sh/boards/mach-hp6xx/hp6xx_apm.c b/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
index b49535c0ddd9..865d8d6e823f 100644
--- a/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
+++ b/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
@@ -86,7 +86,7 @@ static int __init hp6x0_apm_init(void)
86 int ret; 86 int ret;
87 87
88 ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, 88 ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt,
89 IRQF_DISABLED, MODNAME, NULL); 89 0, MODNAME, NULL);
90 if (unlikely(ret < 0)) { 90 if (unlikely(ret < 0)) {
91 printk(KERN_ERR MODNAME ": IRQ %d request failed\n", 91 printk(KERN_ERR MODNAME ": IRQ %d request failed\n",
92 HP680_BTN_IRQ); 92 HP680_BTN_IRQ);
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c
index d00756728bd2..b747c0ab9264 100644
--- a/arch/sh/boards/mach-se/7724/setup.c
+++ b/arch/sh/boards/mach-se/7724/setup.c
@@ -23,12 +23,12 @@
23#include <linux/input.h> 23#include <linux/input.h>
24#include <linux/input/sh_keysc.h> 24#include <linux/input/sh_keysc.h>
25#include <linux/usb/r8a66597.h> 25#include <linux/usb/r8a66597.h>
26#include <linux/sh_eth.h>
26#include <video/sh_mobile_lcdc.h> 27#include <video/sh_mobile_lcdc.h>
27#include <media/sh_mobile_ceu.h> 28#include <media/sh_mobile_ceu.h>
28#include <sound/sh_fsi.h> 29#include <sound/sh_fsi.h>
29#include <asm/io.h> 30#include <asm/io.h>
30#include <asm/heartbeat.h> 31#include <asm/heartbeat.h>
31#include <asm/sh_eth.h>
32#include <asm/clock.h> 32#include <asm/clock.h>
33#include <asm/suspend.h> 33#include <asm/suspend.h>
34#include <cpu/sh7724.h> 34#include <cpu/sh7724.h>
diff --git a/arch/sh/boards/mach-sh7763rdp/setup.c b/arch/sh/boards/mach-sh7763rdp/setup.c
index f3d828f133e5..dd036f1661db 100644
--- a/arch/sh/boards/mach-sh7763rdp/setup.c
+++ b/arch/sh/boards/mach-sh7763rdp/setup.c
@@ -17,8 +17,8 @@
17#include <linux/mtd/physmap.h> 17#include <linux/mtd/physmap.h>
18#include <linux/fb.h> 18#include <linux/fb.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/sh_eth.h>
20#include <mach/sh7763rdp.h> 21#include <mach/sh7763rdp.h>
21#include <asm/sh_eth.h>
22#include <asm/sh7760fb.h> 22#include <asm/sh7760fb.h>
23 23
24/* NOR Flash */ 24/* NOR Flash */
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile
index ba515d800245..e4ea31a62c55 100644
--- a/arch/sh/boot/Makefile
+++ b/arch/sh/boot/Makefile
@@ -19,6 +19,7 @@ CONFIG_MEMORY_START ?= 0x0c000000
19CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 19CONFIG_BOOT_LINK_OFFSET ?= 0x00800000
20CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 20CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000
21CONFIG_ENTRY_OFFSET ?= 0x00001000 21CONFIG_ENTRY_OFFSET ?= 0x00001000
22CONFIG_PHYSICAL_START ?= $(CONFIG_MEMORY_START)
22 23
23suffix-y := bin 24suffix-y := bin
24suffix-$(CONFIG_KERNEL_GZIP) := gz 25suffix-$(CONFIG_KERNEL_GZIP) := gz
@@ -48,7 +49,7 @@ $(obj)/romimage/vmlinux: $(obj)/zImage FORCE
48 $(Q)$(MAKE) $(build)=$(obj)/romimage $@ 49 $(Q)$(MAKE) $(build)=$(obj)/romimage $@
49 50
50KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \ 51KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \
51 $$[$(CONFIG_MEMORY_START) & 0x1fffffff]') 52 $$[$(CONFIG_PHYSICAL_START) & 0x1fffffff]')
52 53
53KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \ 54KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \
54 $$[$(CONFIG_PAGE_OFFSET) + \ 55 $$[$(CONFIG_PAGE_OFFSET) + \
@@ -114,4 +115,5 @@ $(obj)/uImage: $(obj)/uImage.$(suffix-y)
114 @echo ' Image $@ is ready' 115 @echo ' Image $@ is ready'
115 116
116export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \ 117export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \
117 CONFIG_ZERO_PAGE_OFFSET CONFIG_ENTRY_OFFSET KERNEL_MEMORY suffix-y 118 CONFIG_PHYSICAL_START CONFIG_ZERO_PAGE_OFFSET CONFIG_ENTRY_OFFSET \
119 KERNEL_MEMORY suffix-y
diff --git a/arch/sh/drivers/dma/dma-g2.c b/arch/sh/drivers/dma/dma-g2.c
index af7bb589c2c8..be9ca7ca0ce4 100644
--- a/arch/sh/drivers/dma/dma-g2.c
+++ b/arch/sh/drivers/dma/dma-g2.c
@@ -170,7 +170,7 @@ static int __init g2_dma_init(void)
170{ 170{
171 int ret; 171 int ret;
172 172
173 ret = request_irq(HW_EVENT_G2_DMA, g2_dma_interrupt, IRQF_DISABLED, 173 ret = request_irq(HW_EVENT_G2_DMA, g2_dma_interrupt, 0,
174 "g2 DMA handler", &g2_dma_info); 174 "g2 DMA handler", &g2_dma_info);
175 if (unlikely(ret)) 175 if (unlikely(ret))
176 return -EINVAL; 176 return -EINVAL;
diff --git a/arch/sh/drivers/dma/dma-pvr2.c b/arch/sh/drivers/dma/dma-pvr2.c
index 3cee58e7f1e5..706a3434af7a 100644
--- a/arch/sh/drivers/dma/dma-pvr2.c
+++ b/arch/sh/drivers/dma/dma-pvr2.c
@@ -70,7 +70,6 @@ static int pvr2_xfer_dma(struct dma_channel *chan)
70static struct irqaction pvr2_dma_irq = { 70static struct irqaction pvr2_dma_irq = {
71 .name = "pvr2 DMA handler", 71 .name = "pvr2 DMA handler",
72 .handler = pvr2_dma_interrupt, 72 .handler = pvr2_dma_interrupt,
73 .flags = IRQF_DISABLED,
74}; 73};
75 74
76static struct dma_ops pvr2_dma_ops = { 75static struct dma_ops pvr2_dma_ops = {
diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c
index 827208781ed5..a60da6dd4d17 100644
--- a/arch/sh/drivers/dma/dma-sh.c
+++ b/arch/sh/drivers/dma/dma-sh.c
@@ -95,7 +95,7 @@ static int sh_dmac_request_dma(struct dma_channel *chan)
95#if defined(CONFIG_SH_DMA_IRQ_MULTI) 95#if defined(CONFIG_SH_DMA_IRQ_MULTI)
96 IRQF_SHARED, 96 IRQF_SHARED,
97#else 97#else
98 IRQF_DISABLED, 98 0,
99#endif 99#endif
100 chan->dev_id, chan); 100 chan->dev_id, chan);
101} 101}
@@ -305,7 +305,7 @@ static int __init sh_dmac_init(void)
305#if defined(CONFIG_SH_DMA_IRQ_MULTI) 305#if defined(CONFIG_SH_DMA_IRQ_MULTI)
306 IRQF_SHARED, 306 IRQF_SHARED,
307#else 307#else
308 IRQF_DISABLED, 308 0,
309#endif 309#endif
310 dmae_name[n], (void *)dmae_name[n]); 310 dmae_name[n], (void *)dmae_name[n]);
311 if (unlikely(i < 0)) { 311 if (unlikely(i < 0)) {
diff --git a/arch/sh/drivers/dma/dmabrg.c b/arch/sh/drivers/dma/dmabrg.c
index 6ab9c4a15439..3d66a32ce610 100644
--- a/arch/sh/drivers/dma/dmabrg.c
+++ b/arch/sh/drivers/dma/dmabrg.c
@@ -174,17 +174,17 @@ static int __init dmabrg_init(void)
174 or = __raw_readl(DMAOR); 174 or = __raw_readl(DMAOR);
175 __raw_writel(or | DMAOR_BRG | DMAOR_DMEN, DMAOR); 175 __raw_writel(or | DMAOR_BRG | DMAOR_DMEN, DMAOR);
176 176
177 ret = request_irq(DMABRGI0, dmabrg_irq, IRQF_DISABLED, 177 ret = request_irq(DMABRGI0, dmabrg_irq, 0,
178 "DMABRG USB address error", NULL); 178 "DMABRG USB address error", NULL);
179 if (ret) 179 if (ret)
180 goto out0; 180 goto out0;
181 181
182 ret = request_irq(DMABRGI1, dmabrg_irq, IRQF_DISABLED, 182 ret = request_irq(DMABRGI1, dmabrg_irq, 0,
183 "DMABRG Transfer End", NULL); 183 "DMABRG Transfer End", NULL);
184 if (ret) 184 if (ret)
185 goto out1; 185 goto out1;
186 186
187 ret = request_irq(DMABRGI2, dmabrg_irq, IRQF_DISABLED, 187 ret = request_irq(DMABRGI2, dmabrg_irq, 0,
188 "DMABRG Transfer Half", NULL); 188 "DMABRG Transfer Half", NULL);
189 if (ret == 0) 189 if (ret == 0)
190 return ret; 190 return ret;
diff --git a/arch/sh/drivers/pci/pci-sh5.c b/arch/sh/drivers/pci/pci-sh5.c
index 0bf296c78795..16c1e721bf54 100644
--- a/arch/sh/drivers/pci/pci-sh5.c
+++ b/arch/sh/drivers/pci/pci-sh5.c
@@ -107,13 +107,13 @@ static int __init sh5pci_init(void)
107 u32 uval; 107 u32 uval;
108 108
109 if (request_irq(IRQ_ERR, pcish5_err_irq, 109 if (request_irq(IRQ_ERR, pcish5_err_irq,
110 IRQF_DISABLED, "PCI Error",NULL) < 0) { 110 0, "PCI Error",NULL) < 0) {
111 printk(KERN_ERR "PCISH5: Cannot hook PCI_PERR interrupt\n"); 111 printk(KERN_ERR "PCISH5: Cannot hook PCI_PERR interrupt\n");
112 return -EINVAL; 112 return -EINVAL;
113 } 113 }
114 114
115 if (request_irq(IRQ_SERR, pcish5_serr_irq, 115 if (request_irq(IRQ_SERR, pcish5_serr_irq,
116 IRQF_DISABLED, "PCI SERR interrupt", NULL) < 0) { 116 0, "PCI SERR interrupt", NULL) < 0) {
117 printk(KERN_ERR "PCISH5: Cannot hook PCI_SERR interrupt\n"); 117 printk(KERN_ERR "PCISH5: Cannot hook PCI_SERR interrupt\n");
118 return -EINVAL; 118 return -EINVAL;
119 } 119 }
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c
index edb7cca14882..fa7b978cc727 100644
--- a/arch/sh/drivers/pci/pci-sh7780.c
+++ b/arch/sh/drivers/pci/pci-sh7780.c
@@ -172,7 +172,7 @@ static int __init sh7780_pci_setup_irqs(struct pci_channel *hose)
172 PCI_STATUS_SIG_TARGET_ABORT | \ 172 PCI_STATUS_SIG_TARGET_ABORT | \
173 PCI_STATUS_PARITY, hose->reg_base + PCI_STATUS); 173 PCI_STATUS_PARITY, hose->reg_base + PCI_STATUS);
174 174
175 ret = request_irq(hose->serr_irq, sh7780_pci_serr_irq, IRQF_DISABLED, 175 ret = request_irq(hose->serr_irq, sh7780_pci_serr_irq, 0,
176 "PCI SERR interrupt", hose); 176 "PCI SERR interrupt", hose);
177 if (unlikely(ret)) { 177 if (unlikely(ret)) {
178 printk(KERN_ERR "PCI: Failed hooking SERR IRQ\n"); 178 printk(KERN_ERR "PCI: Failed hooking SERR IRQ\n");
diff --git a/arch/sh/drivers/push-switch.c b/arch/sh/drivers/push-switch.c
index afc24556572b..637b79b09657 100644
--- a/arch/sh/drivers/push-switch.c
+++ b/arch/sh/drivers/push-switch.c
@@ -63,7 +63,7 @@ static int switch_drv_probe(struct platform_device *pdev)
63 BUG_ON(!psw_info); 63 BUG_ON(!psw_info);
64 64
65 ret = request_irq(irq, psw_info->irq_handler, 65 ret = request_irq(irq, psw_info->irq_handler,
66 IRQF_DISABLED | psw_info->irq_flags, 66 psw_info->irq_flags,
67 psw_info->name ? psw_info->name : DRV_NAME, pdev); 67 psw_info->name ? psw_info->name : DRV_NAME, pdev);
68 if (unlikely(ret < 0)) 68 if (unlikely(ret < 0))
69 goto err; 69 goto err;
diff --git a/arch/sh/include/asm/page.h b/arch/sh/include/asm/page.h
index 822d6084195b..0dca9a5c6be6 100644
--- a/arch/sh/include/asm/page.h
+++ b/arch/sh/include/asm/page.h
@@ -113,6 +113,16 @@ typedef struct page *pgtable_t;
113#define __MEMORY_SIZE CONFIG_MEMORY_SIZE 113#define __MEMORY_SIZE CONFIG_MEMORY_SIZE
114 114
115/* 115/*
116 * PHYSICAL_OFFSET is the offset in physical memory where the base
117 * of the kernel is loaded.
118 */
119#ifdef CONFIG_PHYSICAL_START
120#define PHYSICAL_OFFSET (CONFIG_PHYSICAL_START - __MEMORY_START)
121#else
122#define PHYSICAL_OFFSET 0
123#endif
124
125/*
116 * PAGE_OFFSET is the virtual address of the start of kernel address 126 * PAGE_OFFSET is the virtual address of the start of kernel address
117 * space. 127 * space.
118 */ 128 */
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c
index 3b097b09a3ba..19222dae8233 100644
--- a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c
+++ b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c
@@ -113,7 +113,14 @@ static struct clk_lookup lookups[] = {
113 113
114 /* MSTP32 clocks */ 114 /* MSTP32 clocks */
115 CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP004]), 115 CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP004]),
116 CLKDEV_CON_ID("riic", &mstp_clks[MSTP000]), 116 CLKDEV_CON_ID("riic0", &mstp_clks[MSTP000]),
117 CLKDEV_CON_ID("riic1", &mstp_clks[MSTP000]),
118 CLKDEV_CON_ID("riic2", &mstp_clks[MSTP000]),
119 CLKDEV_CON_ID("riic3", &mstp_clks[MSTP000]),
120 CLKDEV_CON_ID("riic4", &mstp_clks[MSTP000]),
121 CLKDEV_CON_ID("riic5", &mstp_clks[MSTP000]),
122 CLKDEV_CON_ID("riic6", &mstp_clks[MSTP000]),
123 CLKDEV_CON_ID("riic7", &mstp_clks[MSTP000]),
117 124
118 CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP113]), 125 CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP113]),
119 CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP114]), 126 CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP114]),
@@ -121,6 +128,7 @@ static struct clk_lookup lookups[] = {
121 CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP111]), 128 CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP111]),
122 CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP110]), 129 CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP110]),
123 130
131 CLKDEV_CON_ID("usb_fck", &mstp_clks[MSTP103]),
124 CLKDEV_CON_ID("usb0", &mstp_clks[MSTP102]), 132 CLKDEV_CON_ID("usb0", &mstp_clks[MSTP102]),
125 CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), 133 CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]),
126}; 134};
diff --git a/arch/sh/kernel/cpu/sh4a/smp-shx3.c b/arch/sh/kernel/cpu/sh4a/smp-shx3.c
index de865cac02ee..03f2b55757cf 100644
--- a/arch/sh/kernel/cpu/sh4a/smp-shx3.c
+++ b/arch/sh/kernel/cpu/sh4a/smp-shx3.c
@@ -79,7 +79,7 @@ static void shx3_prepare_cpus(unsigned int max_cpus)
79 79
80 for (i = 0; i < SMP_MSG_NR; i++) 80 for (i = 0; i < SMP_MSG_NR; i++)
81 request_irq(104 + i, ipi_interrupt_handler, 81 request_irq(104 + i, ipi_interrupt_handler,
82 IRQF_DISABLED | IRQF_PERCPU, "IPI", (void *)(long)i); 82 IRQF_PERCPU, "IPI", (void *)(long)i);
83 83
84 for (i = 0; i < max_cpus; i++) 84 for (i = 0; i < max_cpus; i++)
85 set_cpu_present(i, true); 85 set_cpu_present(i, true);
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index 58bff45d1156..1a0e946679a4 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -211,13 +211,16 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn,
211 } 211 }
212 212
213 /* 213 /*
214 * We don't know which RAM region contains kernel data, 214 * We don't know which RAM region contains kernel data or
215 * so we try it repeatedly and let the resource manager 215 * the reserved crashkernel region, so try it repeatedly
216 * test it. 216 * and let the resource manager test it.
217 */ 217 */
218 request_resource(res, &code_resource); 218 request_resource(res, &code_resource);
219 request_resource(res, &data_resource); 219 request_resource(res, &data_resource);
220 request_resource(res, &bss_resource); 220 request_resource(res, &bss_resource);
221#ifdef CONFIG_KEXEC
222 request_resource(res, &crashk_res);
223#endif
221 224
222 /* 225 /*
223 * Also make sure that there is a PMB mapping that covers this 226 * Also make sure that there is a PMB mapping that covers this
diff --git a/arch/sh/kernel/topology.c b/arch/sh/kernel/topology.c
index 38e862852dd0..ecc2d3d0f54a 100644
--- a/arch/sh/kernel/topology.c
+++ b/arch/sh/kernel/topology.c
@@ -11,6 +11,7 @@
11#include <linux/cpumask.h> 11#include <linux/cpumask.h>
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/percpu.h> 13#include <linux/percpu.h>
14#include <linux/topology.h>
14#include <linux/node.h> 15#include <linux/node.h>
15#include <linux/nodemask.h> 16#include <linux/nodemask.h>
16 17
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S
index 731c10ce67b5..c98905f71e28 100644
--- a/arch/sh/kernel/vmlinux.lds.S
+++ b/arch/sh/kernel/vmlinux.lds.S
@@ -23,7 +23,7 @@ OUTPUT_ARCH(sh)
23ENTRY(_start) 23ENTRY(_start)
24SECTIONS 24SECTIONS
25{ 25{
26 . = PAGE_OFFSET + MEMORY_OFFSET + CONFIG_ZERO_PAGE_OFFSET; 26 . = PAGE_OFFSET + MEMORY_OFFSET + PHYSICAL_OFFSET + CONFIG_ZERO_PAGE_OFFSET;
27 27
28 _text = .; /* Text and read-only data */ 28 _text = .; /* Text and read-only data */
29 29
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 58a93fb3d965..c9dbace35b16 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -287,6 +287,8 @@ static void __init do_init_bootmem(void)
287static void __init early_reserve_mem(void) 287static void __init early_reserve_mem(void)
288{ 288{
289 unsigned long start_pfn; 289 unsigned long start_pfn;
290 u32 zero_base = (u32)__MEMORY_START + (u32)PHYSICAL_OFFSET;
291 u32 start = zero_base + (u32)CONFIG_ZERO_PAGE_OFFSET;
290 292
291 /* 293 /*
292 * Partially used pages are not usable - thus 294 * Partially used pages are not usable - thus
@@ -300,15 +302,13 @@ static void __init early_reserve_mem(void)
300 * this catches the (definitely buggy) case of us accidentally 302 * this catches the (definitely buggy) case of us accidentally
301 * initializing the bootmem allocator with an invalid RAM area. 303 * initializing the bootmem allocator with an invalid RAM area.
302 */ 304 */
303 memblock_reserve(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET, 305 memblock_reserve(start, (PFN_PHYS(start_pfn) + PAGE_SIZE - 1) - start);
304 (PFN_PHYS(start_pfn) + PAGE_SIZE - 1) -
305 (__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET));
306 306
307 /* 307 /*
308 * Reserve physical pages below CONFIG_ZERO_PAGE_OFFSET. 308 * Reserve physical pages below CONFIG_ZERO_PAGE_OFFSET.
309 */ 309 */
310 if (CONFIG_ZERO_PAGE_OFFSET != 0) 310 if (CONFIG_ZERO_PAGE_OFFSET != 0)
311 memblock_reserve(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET); 311 memblock_reserve(zero_base, CONFIG_ZERO_PAGE_OFFSET);
312 312
313 /* 313 /*
314 * Handle additional early reservations 314 * Handle additional early reservations