Commit f62378fc authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-arm

parents a418500b 6a1ced59
...@@ -256,5 +256,5 @@ asmlinkage void ofw_init(ofw_handle_t o, int *nomr, int *pointer) ...@@ -256,5 +256,5 @@ asmlinkage void ofw_init(ofw_handle_t o, int *nomr, int *pointer)
temp[11]='\0'; temp[11]='\0';
mem_len = OF_getproplen(o,phandle, temp); mem_len = OF_getproplen(o,phandle, temp);
OF_getprop(o,phandle, temp, buffer, mem_len); OF_getprop(o,phandle, temp, buffer, mem_len);
(unsigned char) pointer[32] = ((unsigned char *) buffer)[mem_len-2]; * ((unsigned char *) &pointer[32]) = ((unsigned char *) buffer)[mem_len-2];
} }
...@@ -624,6 +624,9 @@ void __attribute__((noreturn)) __bug(const char *file, int line, void *data) ...@@ -624,6 +624,9 @@ void __attribute__((noreturn)) __bug(const char *file, int line, void *data)
printk(" - extra data = %p", data); printk(" - extra data = %p", data);
printk("\n"); printk("\n");
*(int *)0 = 0; *(int *)0 = 0;
/* Avoid "noreturn function does return" */
for (;;);
} }
EXPORT_SYMBOL(__bug); EXPORT_SYMBOL(__bug);
......
...@@ -23,20 +23,20 @@ SECTIONS ...@@ -23,20 +23,20 @@ SECTIONS
*(.init.text) *(.init.text)
_einittext = .; _einittext = .;
__proc_info_begin = .; __proc_info_begin = .;
*(.proc.info) *(.proc.info.init)
__proc_info_end = .; __proc_info_end = .;
__arch_info_begin = .; __arch_info_begin = .;
*(.arch.info) *(.arch.info.init)
__arch_info_end = .; __arch_info_end = .;
__tagtable_begin = .; __tagtable_begin = .;
*(.taglist) *(.taglist.init)
__tagtable_end = .; __tagtable_end = .;
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
*(.init.setup) *(.init.setup)
__setup_end = .; __setup_end = .;
__early_begin = .; __early_begin = .;
*(__early_param) *(.early_param.init)
__early_end = .; __early_end = .;
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) *(.initcall1.init)
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
* *
* Modifications: * Modifications:
* 02-May-2005 BJD Copied from mach-bast.c * 02-May-2005 BJD Copied from mach-bast.c
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -232,7 +233,7 @@ static struct s3c24xx_board anubis_board __initdata = { ...@@ -232,7 +233,7 @@ static struct s3c24xx_board anubis_board __initdata = {
.clocks_count = ARRAY_SIZE(anubis_clocks) .clocks_count = ARRAY_SIZE(anubis_clocks)
}; };
void __init anubis_map_io(void) static void __init anubis_map_io(void)
{ {
/* initialise the clocks */ /* initialise the clocks */
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
* 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s
* 25-Jul-2005 BJD Removed ASIX static mappings * 25-Jul-2005 BJD Removed ASIX static mappings
* 27-Jul-2005 BJD Ensure maximum frequency of i2c bus * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -428,7 +429,7 @@ static struct s3c24xx_board bast_board __initdata = { ...@@ -428,7 +429,7 @@ static struct s3c24xx_board bast_board __initdata = {
.clocks_count = ARRAY_SIZE(bast_clocks) .clocks_count = ARRAY_SIZE(bast_clocks)
}; };
void __init bast_map_io(void) static void __init bast_map_io(void)
{ {
/* initialise the clocks */ /* initialise the clocks */
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
* 10-Jan-2005 BJD Removed include of s3c2410.h * 10-Jan-2005 BJD Removed include of s3c2410.h
* 14-Jan-2005 BJD Added clock init * 14-Jan-2005 BJD Added clock init
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -147,7 +148,7 @@ static struct s3c24xx_board h1940_board __initdata = { ...@@ -147,7 +148,7 @@ static struct s3c24xx_board h1940_board __initdata = {
.devices_count = ARRAY_SIZE(h1940_devices) .devices_count = ARRAY_SIZE(h1940_devices)
}; };
void __init h1940_map_io(void) static void __init h1940_map_io(void)
{ {
s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc)); s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
...@@ -155,13 +156,13 @@ void __init h1940_map_io(void) ...@@ -155,13 +156,13 @@ void __init h1940_map_io(void)
s3c24xx_set_board(&h1940_board); s3c24xx_set_board(&h1940_board);
} }
void __init h1940_init_irq(void) static void __init h1940_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }
void __init h1940_init(void) static void __init h1940_init(void)
{ {
set_s3c2410fb_info(&h1940_lcdcfg); set_s3c2410fb_info(&h1940_lcdcfg);
} }
......
...@@ -97,7 +97,7 @@ static struct s3c24xx_board n30_board __initdata = { ...@@ -97,7 +97,7 @@ static struct s3c24xx_board n30_board __initdata = {
.devices_count = ARRAY_SIZE(n30_devices) .devices_count = ARRAY_SIZE(n30_devices)
}; };
void __init n30_map_io(void) static void __init n30_map_io(void)
{ {
s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc)); s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
...@@ -105,14 +105,14 @@ void __init n30_map_io(void) ...@@ -105,14 +105,14 @@ void __init n30_map_io(void)
s3c24xx_set_board(&n30_board); s3c24xx_set_board(&n30_board);
} }
void __init n30_init_irq(void) static void __init n30_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }
/* GPB3 is the line that controls the pull-up for the USB D+ line */ /* GPB3 is the line that controls the pull-up for the USB D+ line */
void __init n30_init(void) static void __init n30_init(void)
{ {
s3c_device_i2c.dev.platform_data = &n30_i2ccfg; s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
......
...@@ -136,7 +136,7 @@ static void __init nexcoder_sensorboard_init(void) ...@@ -136,7 +136,7 @@ static void __init nexcoder_sensorboard_init(void)
s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_OUTP); // CAM_GPIO6 => CAM_PWRDN s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_OUTP); // CAM_GPIO6 => CAM_PWRDN
} }
void __init nexcoder_map_io(void) static void __init nexcoder_map_io(void)
{ {
s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc)); s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
......
...@@ -105,7 +105,7 @@ static struct s3c24xx_board otom11_board __initdata = { ...@@ -105,7 +105,7 @@ static struct s3c24xx_board otom11_board __initdata = {
}; };
void __init otom11_map_io(void) static void __init otom11_map_io(void)
{ {
s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc)); s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
* 14-Jan-2005 BJD Added new clock init * 14-Jan-2005 BJD Added new clock init
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 14-Mar-2005 BJD Fixed __iomem warnings * 14-Mar-2005 BJD Fixed __iomem warnings
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -108,7 +109,7 @@ static struct s3c24xx_board rx3715_board __initdata = { ...@@ -108,7 +109,7 @@ static struct s3c24xx_board rx3715_board __initdata = {
.devices_count = ARRAY_SIZE(rx3715_devices) .devices_count = ARRAY_SIZE(rx3715_devices)
}; };
void __init rx3715_map_io(void) static void __init rx3715_map_io(void)
{ {
s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc)); s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc));
s3c24xx_init_clocks(16934000); s3c24xx_init_clocks(16934000);
...@@ -116,7 +117,7 @@ void __init rx3715_map_io(void) ...@@ -116,7 +117,7 @@ void __init rx3715_map_io(void)
s3c24xx_set_board(&rx3715_board); s3c24xx_set_board(&rx3715_board);
} }
void __init rx3715_init_irq(void) static void __init rx3715_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
* Ben Dooks <ben@simtec.co.uk> * Ben Dooks <ben@simtec.co.uk>
* *
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 20-Sep-2005 BJD Added static to non-exported items
* *
***********************************************************************/ ***********************************************************************/
...@@ -97,7 +98,7 @@ static struct s3c24xx_board smdk2410_board __initdata = { ...@@ -97,7 +98,7 @@ static struct s3c24xx_board smdk2410_board __initdata = {
.devices_count = ARRAY_SIZE(smdk2410_devices) .devices_count = ARRAY_SIZE(smdk2410_devices)
}; };
void __init smdk2410_map_io(void) static void __init smdk2410_map_io(void)
{ {
s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc)); s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
...@@ -105,7 +106,7 @@ void __init smdk2410_map_io(void) ...@@ -105,7 +106,7 @@ void __init smdk2410_map_io(void)
s3c24xx_set_board(&smdk2410_board); s3c24xx_set_board(&smdk2410_board);
} }
void __init smdk2410_init_irq(void) static void __init smdk2410_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
* 22-Feb-2005 BJD Updated for 2.6.11-rc5 relesa * 22-Feb-2005 BJD Updated for 2.6.11-rc5 relesa
* 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA * 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA
* 14-Mar-2005 BJD void __iomem fixes * 14-Mar-2005 BJD void __iomem fixes
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -98,7 +99,7 @@ static struct s3c24xx_board smdk2440_board __initdata = { ...@@ -98,7 +99,7 @@ static struct s3c24xx_board smdk2440_board __initdata = {
.devices_count = ARRAY_SIZE(smdk2440_devices) .devices_count = ARRAY_SIZE(smdk2440_devices)
}; };
void __init smdk2440_map_io(void) static void __init smdk2440_map_io(void)
{ {
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(16934400); s3c24xx_init_clocks(16934400);
...@@ -106,7 +107,7 @@ void __init smdk2440_map_io(void) ...@@ -106,7 +107,7 @@ void __init smdk2440_map_io(void)
s3c24xx_set_board(&smdk2440_board); s3c24xx_set_board(&smdk2440_board);
} }
void __init smdk2440_machine_init(void) static void __init smdk2440_machine_init(void)
{ {
/* Configure the LEDs (even if we have no LED support)*/ /* Configure the LEDs (even if we have no LED support)*/
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 14-Mar-2006 BJD void __iomem fixes * 14-Mar-2006 BJD void __iomem fixes
* 22-Jun-2006 BJD Added DM9000 platform information * 22-Jun-2006 BJD Added DM9000 platform information
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -347,7 +348,7 @@ static void vr1000_power_off(void) ...@@ -347,7 +348,7 @@ static void vr1000_power_off(void)
s3c2410_gpio_setpin(S3C2410_GPB9, 1); s3c2410_gpio_setpin(S3C2410_GPB9, 1);
} }
void __init vr1000_map_io(void) static void __init vr1000_map_io(void)
{ {
/* initialise clock sources */ /* initialise clock sources */
......
...@@ -233,7 +233,17 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) ...@@ -233,7 +233,17 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
if (in_interrupt() || !mm) if (in_interrupt() || !mm)
goto no_context; goto no_context;
down_read(&mm->mmap_sem); /*
* As per x86, we may deadlock here. However, since the kernel only
* validly references user space from well defined areas of the code,
* we can bug out early if this is from code which shouldn't.
*/
if (!down_read_trylock(&mm->mmap_sem)) {
if (!user_mode(regs) && !search_exception_tables(regs->ARM_pc))
goto no_context;
down_read(&mm->mmap_sem);
}
fault = __do_page_fault(mm, addr, fsr, tsk); fault = __do_page_fault(mm, addr, fsr, tsk);
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);
......
...@@ -509,7 +509,7 @@ cpu_arm1020_name: ...@@ -509,7 +509,7 @@ cpu_arm1020_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1020_proc_info,#object .type __arm1020_proc_info,#object
__arm1020_proc_info: __arm1020_proc_info:
......
...@@ -491,7 +491,7 @@ cpu_arm1020e_name: ...@@ -491,7 +491,7 @@ cpu_arm1020e_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1020e_proc_info,#object .type __arm1020e_proc_info,#object
__arm1020e_proc_info: __arm1020e_proc_info:
......
...@@ -473,7 +473,7 @@ cpu_arm1022_name: ...@@ -473,7 +473,7 @@ cpu_arm1022_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1022_proc_info,#object .type __arm1022_proc_info,#object
__arm1022_proc_info: __arm1022_proc_info:
......
...@@ -469,7 +469,7 @@ cpu_arm1026_name: ...@@ -469,7 +469,7 @@ cpu_arm1026_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1026_proc_info,#object .type __arm1026_proc_info,#object
__arm1026_proc_info: __arm1026_proc_info:
......
...@@ -332,7 +332,7 @@ cpu_arm710_name: ...@@ -332,7 +332,7 @@ cpu_arm710_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm6_proc_info, #object .type __arm6_proc_info, #object
__arm6_proc_info: __arm6_proc_info:
......
...@@ -222,7 +222,7 @@ cpu_arm720_name: ...@@ -222,7 +222,7 @@ cpu_arm720_name:
* See linux/include/asm-arm/procinfo.h for a definition of this structure. * See linux/include/asm-arm/procinfo.h for a definition of this structure.
*/ */
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm710_proc_info, #object .type __arm710_proc_info, #object
__arm710_proc_info: __arm710_proc_info:
......
...@@ -452,7 +452,7 @@ cpu_arm920_name: ...@@ -452,7 +452,7 @@ cpu_arm920_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm920_proc_info,#object .type __arm920_proc_info,#object
__arm920_proc_info: __arm920_proc_info:
......
...@@ -456,7 +456,7 @@ cpu_arm922_name: ...@@ -456,7 +456,7 @@ cpu_arm922_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm922_proc_info,#object .type __arm922_proc_info,#object
__arm922_proc_info: __arm922_proc_info:
......
...@@ -521,7 +521,7 @@ cpu_arm925_name: ...@@ -521,7 +521,7 @@ cpu_arm925_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm925_proc_info,#object .type __arm925_proc_info,#object
__arm925_proc_info: __arm925_proc_info:
......
...@@ -471,7 +471,7 @@ cpu_arm926_name: ...@@ -471,7 +471,7 @@ cpu_arm926_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm926_proc_info,#object .type __arm926_proc_info,#object
__arm926_proc_info: __arm926_proc_info:
......
...@@ -249,7 +249,7 @@ cpu_sa110_name: ...@@ -249,7 +249,7 @@ cpu_sa110_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __sa110_proc_info,#object .type __sa110_proc_info,#object
__sa110_proc_info: __sa110_proc_info:
......
...@@ -280,7 +280,7 @@ cpu_sa1110_name: ...@@ -280,7 +280,7 @@ cpu_sa1110_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __sa1100_proc_info,#object .type __sa1100_proc_info,#object
__sa1100_proc_info: __sa1100_proc_info:
......
...@@ -240,7 +240,7 @@ cpu_elf_name: ...@@ -240,7 +240,7 @@ cpu_elf_name:
.size cpu_elf_name, . - cpu_elf_name .size cpu_elf_name, . - cpu_elf_name
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
/* /*
* Match any ARMv6 processor core. * Match any ARMv6 processor core.
......
...@@ -578,7 +578,7 @@ cpu_pxa270_name: ...@@ -578,7 +578,7 @@ cpu_pxa270_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __80200_proc_info,#object .type __80200_proc_info,#object
__80200_proc_info: __80200_proc_info:
......
...@@ -23,12 +23,13 @@ static struct i2c_driver pcf8583_driver; ...@@ -23,12 +23,13 @@ static struct i2c_driver pcf8583_driver;
static unsigned short ignore[] = { I2C_CLIENT_END }; static unsigned short ignore[] = { I2C_CLIENT_END };
static unsigned short normal_addr[] = { 0x50, I2C_CLIENT_END }; static unsigned short normal_addr[] = { 0x50, I2C_CLIENT_END };
static unsigned short *forces[] = { NULL };
static struct i2c_client_address_data addr_data = { static struct i2c_client_address_data addr_data = {
.normal_i2c = normal_addr, .normal_i2c = normal_addr,
.probe = ignore, .probe = ignore,
.ignore = ignore, .ignore = ignore,
.force = ignore, .forces = forces,
}; };
#define DAT(x) ((unsigned int)(x->dev.driver_data)) #define DAT(x) ((unsigned int)(x->dev.driver_data))
......
...@@ -50,7 +50,7 @@ struct machine_desc { ...@@ -50,7 +50,7 @@ struct machine_desc {
*/ */
#define MACHINE_START(_type,_name) \ #define MACHINE_START(_type,_name) \
const struct machine_desc __mach_desc_##_type \ const struct machine_desc __mach_desc_##_type \
__attribute__((__section__(".arch.info"))) = { \ __attribute__((__section__(".arch.info.init"))) = { \
.nr = MACH_TYPE_##_type, \ .nr = MACH_TYPE_##_type, \
.name = _name, .name = _name,
......
...@@ -171,7 +171,7 @@ struct tagtable { ...@@ -171,7 +171,7 @@ struct tagtable {
int (*parse)(const struct tag *); int (*parse)(const struct tag *);
}; };
#define __tag __attribute_used__ __attribute__((__section__(".taglist"))) #define __tag __attribute_used__ __attribute__((__section__(".taglist.init")))
#define __tagtable(tag, fn) \ #define __tagtable(tag, fn) \
static struct tagtable __tagtable_##fn __tag = { tag, fn } static struct tagtable __tagtable_##fn __tag = { tag, fn }
...@@ -213,6 +213,6 @@ struct early_params { ...@@ -213,6 +213,6 @@ struct early_params {
#define __early_param(name,fn) \ #define __early_param(name,fn) \
static struct early_params __early_##fn __attribute_used__ \ static struct early_params __early_##fn __attribute_used__ \
__attribute__((__section__("__early_param"))) = { name, fn } __attribute__((__section__(".early_param.init"))) = { name, fn }
#endif #endif
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