Merge branch 'linus' into core/rodata
This commit is contained in:
@@ -242,6 +242,7 @@ void __init plat_irq_setup(void)
|
||||
reg += 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@@ -132,6 +132,7 @@ int __init detect_cpu_and_cache_system(void)
|
||||
|
||||
switch (prr) {
|
||||
case 0x50:
|
||||
case 0x51:
|
||||
boot_cpu_data.type = CPU_SH7723;
|
||||
boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_L2_CACHE;
|
||||
break;
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
static struct resource usbf_resources[] = {
|
||||
[0] = {
|
||||
.name = "USBF",
|
||||
.name = "m66592_udc",
|
||||
.start = 0x04480000,
|
||||
.end = 0x044800FF,
|
||||
.flags = IORESOURCE_MEM,
|
||||
|
@@ -16,6 +16,21 @@
|
||||
|
||||
static struct plat_sci_port sci_platform_data[] = {
|
||||
{
|
||||
.mapbase = 0xffe00000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 80, 80, 80, 80 },
|
||||
},{
|
||||
.mapbase = 0xffe10000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 81, 81, 81, 81 },
|
||||
},{
|
||||
.mapbase = 0xffe20000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 82, 82, 82, 82 },
|
||||
},{
|
||||
.mapbase = 0xa4e30000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCI,
|
||||
@@ -73,9 +88,35 @@ static struct platform_device rtc_device = {
|
||||
.resource = rtc_resources,
|
||||
};
|
||||
|
||||
static struct resource sh7723_usb_host_resources[] = {
|
||||
[0] = {
|
||||
.name = "r8a66597_hcd",
|
||||
.start = 0xa4d80000,
|
||||
.end = 0xa4d800ff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = 65,
|
||||
.end = 65,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device sh7723_usb_host_device = {
|
||||
.name = "r8a66597_hcd",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.dma_mask = NULL, /* not use dma */
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(sh7723_usb_host_resources),
|
||||
.resource = sh7723_usb_host_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *sh7723_devices[] __initdata = {
|
||||
&sci_device,
|
||||
&rtc_device,
|
||||
&sh7723_usb_host_device,
|
||||
};
|
||||
|
||||
static int __init sh7723_devices_setup(void)
|
||||
@@ -153,7 +194,7 @@ static struct intc_vect vectors[] __initdata = {
|
||||
INTC_VECT(VIO_VOUI,0x8E0),
|
||||
|
||||
INTC_VECT(SCIFA_SCIFA0,0x900),
|
||||
INTC_VECT(VPU_VPUI,0x920),
|
||||
INTC_VECT(VPU_VPUI,0x980),
|
||||
INTC_VECT(TPU_TPUI,0x9A0),
|
||||
INTC_VECT(ADC_ADI,0x9E0),
|
||||
INTC_VECT(USB_USI0,0xA20),
|
||||
@@ -292,9 +333,3 @@ void __init plat_irq_setup(void)
|
||||
{
|
||||
register_intc_controller(&intc_desc);
|
||||
}
|
||||
|
||||
void __init plat_mem_setup(void)
|
||||
{
|
||||
/* Register the URAM space as Node 1 */
|
||||
setup_bootmem_node(1, 0x055f0000, 0x05610000);
|
||||
}
|
||||
|
@@ -291,8 +291,9 @@ static struct intc_sense_reg irq_sense_registers[] __initdata = {
|
||||
};
|
||||
|
||||
static DECLARE_INTC_DESC(intc_irq_desc, "sh7763-irq", irq_vectors,
|
||||
NULL, NULL, irq_mask_registers, irq_prio_registers,
|
||||
irq_sense_registers);
|
||||
NULL, irq_mask_registers, irq_prio_registers,
|
||||
irq_sense_registers);
|
||||
|
||||
|
||||
/* External interrupt pins in IRL mode */
|
||||
static struct intc_vect irl_vectors[] __initdata = {
|
||||
@@ -324,10 +325,10 @@ static struct intc_mask_reg irl7654_mask_registers[] __initdata = {
|
||||
};
|
||||
|
||||
static DECLARE_INTC_DESC(intc_irl7654_desc, "sh7763-irl7654", irl_vectors,
|
||||
NULL, NULL, irl7654_mask_registers, NULL, NULL);
|
||||
NULL, irl7654_mask_registers, NULL, NULL);
|
||||
|
||||
static DECLARE_INTC_DESC(intc_irl3210_desc, "sh7763-irl3210", irl_vectors,
|
||||
NULL, NULL, irl3210_mask_registers, NULL, NULL);
|
||||
NULL, irl3210_mask_registers, NULL, NULL);
|
||||
|
||||
#define INTC_ICR0 0xffd00000
|
||||
#define INTC_INTMSK0 0xffd00044
|
||||
|
@@ -30,6 +30,7 @@
|
||||
#include <linux/fs.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
void *module_alloc(unsigned long size)
|
||||
{
|
||||
@@ -56,34 +57,6 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SUPERH32
|
||||
#define COPY_UNALIGNED_WORD(sw, tw, align) \
|
||||
{ \
|
||||
void *__s = &(sw), *__t = &(tw); \
|
||||
unsigned short *__s2 = __s, *__t2 = __t; \
|
||||
unsigned char *__s1 = __s, *__t1 = __t; \
|
||||
switch ((align)) \
|
||||
{ \
|
||||
case 0: \
|
||||
*(unsigned long *) __t = *(unsigned long *) __s; \
|
||||
break; \
|
||||
case 2: \
|
||||
*__t2++ = *__s2++; \
|
||||
*__t2 = *__s2; \
|
||||
break; \
|
||||
default: \
|
||||
*__t1++ = *__s1++; \
|
||||
*__t1++ = *__s1++; \
|
||||
*__t1++ = *__s1++; \
|
||||
*__t1 = *__s1; \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
#else
|
||||
/* One thing SHmedia doesn't screw up! */
|
||||
#define COPY_UNALIGNED_WORD(sw, tw, align) { (tw) = (sw); }
|
||||
#endif
|
||||
|
||||
int apply_relocate_add(Elf32_Shdr *sechdrs,
|
||||
const char *strtab,
|
||||
unsigned int symindex,
|
||||
@@ -96,7 +69,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
|
||||
Elf32_Addr relocation;
|
||||
uint32_t *location;
|
||||
uint32_t value;
|
||||
int align;
|
||||
|
||||
pr_debug("Applying relocate section %u to %u\n", relsec,
|
||||
sechdrs[relsec].sh_info);
|
||||
@@ -109,7 +81,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
|
||||
sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
|
||||
+ ELF32_R_SYM(rel[i].r_info);
|
||||
relocation = sym->st_value + rel[i].r_addend;
|
||||
align = (int)location & 3;
|
||||
|
||||
#ifdef CONFIG_SUPERH64
|
||||
/* For text addresses, bit2 of the st_other field indicates
|
||||
@@ -122,15 +93,15 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
|
||||
|
||||
switch (ELF32_R_TYPE(rel[i].r_info)) {
|
||||
case R_SH_DIR32:
|
||||
COPY_UNALIGNED_WORD (*location, value, align);
|
||||
value = get_unaligned(location);
|
||||
value += relocation;
|
||||
COPY_UNALIGNED_WORD (value, *location, align);
|
||||
put_unaligned(value, location);
|
||||
break;
|
||||
case R_SH_REL32:
|
||||
relocation = (relocation - (Elf32_Addr) location);
|
||||
COPY_UNALIGNED_WORD (*location, value, align);
|
||||
value = get_unaligned(location);
|
||||
value += relocation;
|
||||
COPY_UNALIGNED_WORD (value, *location, align);
|
||||
put_unaligned(value, location);
|
||||
break;
|
||||
case R_SH_IMM_LOW16:
|
||||
*location = (*location & ~0x3fffc00) |
|
||||
|
Reference in New Issue
Block a user