From b0d22d66fd485316653b8db4c16139eeae5a0266 Mon Sep 17 00:00:00 2001 From: Steven King Date: Thu, 15 Oct 2009 12:54:41 -0700 Subject: m68knommu: Coldfire GPIO corrections Pin 0 of the EPORT is not connected on the 523x, 5271, 5275 and 528x and the TIMER on the 523x has 8 pins, not 4. Signed-off-by: Steven King Signed-off-by: Greg Ungerer --- arch/m68knommu/platform/523x/gpio.c | 5 +++-- arch/m68knommu/platform/527x/gpio.c | 6 ++++-- arch/m68knommu/platform/528x/gpio.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/platform/523x/gpio.c b/arch/m68knommu/platform/523x/gpio.c index f02840d54d3c..a8842dc27839 100644 --- a/arch/m68knommu/platform/523x/gpio.c +++ b/arch/m68knommu/platform/523x/gpio.c @@ -30,7 +30,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { .direction_output = mcf_gpio_direction_output, .get = mcf_gpio_get_value, .set = mcf_gpio_set_value, - .ngpio = 8, + .base = 1, + .ngpio = 7, }, .pddr = MCFEPORT_EPDDR, .podr = MCFEPORT_EPDR, @@ -244,7 +245,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { .get = mcf_gpio_get_value, .set = mcf_gpio_set_value_fast, .base = 96, - .ngpio = 4, + .ngpio = 8, }, .pddr = MCFGPIO_PDDR_TIMER, .podr = MCFGPIO_PODR_TIMER, diff --git a/arch/m68knommu/platform/527x/gpio.c b/arch/m68knommu/platform/527x/gpio.c index 1028142851ac..0b56e19db0f8 100644 --- a/arch/m68knommu/platform/527x/gpio.c +++ b/arch/m68knommu/platform/527x/gpio.c @@ -31,7 +31,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { .direction_output = mcf_gpio_direction_output, .get = mcf_gpio_get_value, .set = mcf_gpio_set_value, - .ngpio = 8, + .base = 1, + .ngpio = 7, }, .pddr = MCFEPORT_EPDDR, .podr = MCFEPORT_EPDR, @@ -263,7 +264,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { .direction_output = mcf_gpio_direction_output, .get = mcf_gpio_get_value, .set = mcf_gpio_set_value, - .ngpio = 8, + .base = 1, + .ngpio = 7, }, .pddr = MCFEPORT_EPDDR, .podr = MCFEPORT_EPDR, diff --git a/arch/m68knommu/platform/528x/gpio.c b/arch/m68knommu/platform/528x/gpio.c index ec593950696a..eedaf0adbcd7 100644 --- a/arch/m68knommu/platform/528x/gpio.c +++ b/arch/m68knommu/platform/528x/gpio.c @@ -31,7 +31,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { .get = mcf_gpio_get_value, .set = mcf_gpio_set_value, .base = 1, - .ngpio = 8, + .ngpio = 7, }, .pddr = MCFEPORT_EPDDR, .podr = MCFEPORT_EPDR, -- cgit v1.2.3 From 588baeac38829304390b690142376d2c71ac5c9f Mon Sep 17 00:00:00 2001 From: Lennart Sorensen Date: Fri, 18 Sep 2009 13:49:36 -0400 Subject: m68knommu: add uboot commandline argument passing support This patch adds m68knommu support for getting the kernel command line arguments from uboot, including the passing of an initrd image from uboot. We use this on a 5270/5271 based board, and have used it on the 5271evb development board. It is based on a patch found in the linux-2.6-denx git tree, although that tree seems to have had lots of other changes since which are not in the main Linus kernel. I believe this will work on all coldfires, although other m68knommu might be missing the _init_sp stuff in head.S as far as I can tell. I only have the coldfire to test on. Signed-off-by: Lennart Sorensen Signed-off-by: Greg Ungerer --- arch/m68knommu/Kconfig | 7 +++ arch/m68knommu/kernel/setup.c | 92 ++++++++++++++++++++++++++++++++- arch/m68knommu/platform/coldfire/head.S | 10 ++++ 3 files changed, 107 insertions(+), 2 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index e2201b90aa22..064f5913db1a 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig @@ -533,6 +533,13 @@ config AVNET default y depends on (AVNET5282) +config UBOOT + bool "Support for U-Boot command line parameters" + help + If you say Y here kernel will try to collect command + line parameters from the initial u-boot stack. + default n + config 4KSTACKS bool "Use 4Kb for kernel stacks instead of 8Kb" default y diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 5c2bb3eeaaa2..ba92b90d5fbc 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -52,7 +54,6 @@ void (*mach_reset)(void); void (*mach_halt)(void); void (*mach_power_off)(void); - #ifdef CONFIG_M68000 #define CPU "MC68000" #endif @@ -111,6 +112,69 @@ void (*mach_power_off)(void); extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; extern int _ramstart, _ramend; +#if defined(CONFIG_UBOOT) +/* + * parse_uboot_commandline + * + * Copies u-boot commandline arguments and store them in the proper linux + * variables. + * + * Assumes: + * _init_sp global contains the address in the stack pointer when the + * kernel starts (see head.S::_start) + * + * U-Boot calling convention: + * (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); + * + * _init_sp can be parsed as such + * + * _init_sp+00 = u-boot cmd after jsr into kernel (skip) + * _init_sp+04 = &kernel board_info (residual data) + * _init_sp+08 = &initrd_start + * _init_sp+12 = &initrd_end + * _init_sp+16 = &cmd_start + * _init_sp+20 = &cmd_end + * + * This also assumes that the memory locations pointed to are still + * unmodified. U-boot places them near the end of external SDRAM. + * + * Argument(s): + * commandp = the linux commandline arg container to fill. + * size = the sizeof commandp. + * + * Returns: + */ +void parse_uboot_commandline(char *commandp, int size) +{ + extern unsigned long _init_sp; + unsigned long *sp; + unsigned long uboot_kbd; + unsigned long uboot_initrd_start, uboot_initrd_end; + unsigned long uboot_cmd_start, uboot_cmd_end; + + + sp = (unsigned long *)_init_sp; + uboot_kbd = sp[1]; + uboot_initrd_start = sp[2]; + uboot_initrd_end = sp[3]; + uboot_cmd_start = sp[4]; + uboot_cmd_end = sp[5]; + + if (uboot_cmd_start && uboot_cmd_end) + strncpy(commandp, (const char *)uboot_cmd_start, size); +#if defined(CONFIG_BLK_DEV_INITRD) + if (uboot_initrd_start && uboot_initrd_end && + (uboot_initrd_end > uboot_initrd_start)) { + initrd_start = uboot_initrd_start; + initrd_end = uboot_initrd_end; + ROOT_DEV = Root_RAM0; + printk(KERN_INFO "initrd at 0x%lx:0x%lx\n", + initrd_start, initrd_end); + } +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ +} +#endif /* #if defined(CONFIG_UBOOT) */ + void __init setup_arch(char **cmdline_p) { int bootmap_size; @@ -128,7 +192,24 @@ void __init setup_arch(char **cmdline_p) #if defined(CONFIG_BOOTPARAM) strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); command_line[sizeof(command_line) - 1] = 0; -#endif +#endif /* CONFIG_BOOTPARAM */ + +#if defined(CONFIG_UBOOT) + /* CONFIG_UBOOT and CONFIG_BOOTPARAM defined, concatenate cmdline */ + #if defined(CONFIG_BOOTPARAM) + /* Add the whitespace separator */ + command_line[strlen(CONFIG_BOOTPARAM_STRING)] = ' '; + /* Parse uboot command line into the rest of the buffer */ + parse_uboot_commandline( + &command_line[(strlen(CONFIG_BOOTPARAM_STRING)+1)], + (sizeof(command_line) - + (strlen(CONFIG_BOOTPARAM_STRING)+1))); + /* Only CONFIG_UBOOT defined, create cmdline */ + #else + parse_uboot_commandline(&command_line[0], sizeof(command_line)); + #endif /* CONFIG_BOOTPARAM */ + command_line[sizeof(command_line) - 1] = 0; +#endif /* CONFIG_UBOOT */ printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); @@ -204,6 +285,13 @@ void __init setup_arch(char **cmdline_p) free_bootmem(memory_start, memory_end - memory_start); reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); +#if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD) + if ((initrd_start > 0) && (initrd_start < initrd_end) && + (initrd_end < memory_end)) + reserve_bootmem(initrd_start, initrd_end - initrd_start, + BOOTMEM_DEFAULT); +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ + /* * Get kmalloc into gear. */ diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S index 2b0d73c0cc32..4b91aa24eb00 100644 --- a/arch/m68knommu/platform/coldfire/head.S +++ b/arch/m68knommu/platform/coldfire/head.S @@ -106,6 +106,9 @@ .global _ramvec .global _ramstart .global _ramend +#if defined(CONFIG_UBOOT) +.global _init_sp +#endif /*****************************************************************************/ @@ -124,6 +127,10 @@ _ramstart: .long 0 _ramend: .long 0 +#if defined(CONFIG_UBOOT) +_init_sp: +.long 0 +#endif /*****************************************************************************/ @@ -137,6 +144,9 @@ __HEAD _start: nop /* filler */ movew #0x2700, %sr /* no interrupts */ +#if defined(CONFIG_UBOOT) + movel %sp,_init_sp /* save initial stack pointer */ +#endif /* * Do any platform or board specific setup now. Most boards -- cgit v1.2.3 From 193f087d492c566a211d01942c0f6b395f34f2ab Mon Sep 17 00:00:00 2001 From: Greg Ungerer Date: Tue, 7 Jul 2009 15:54:54 +1000 Subject: m68knommu: define arch_has_single_step() and friends Towards adding CONFIG_UTRACE support for non-mmu m68k add arch_has_single_step, and its support functions user_enable_single_step() and user_disable_single_step(). Signed-off-by: Greg Ungerer --- arch/m68k/include/asm/ptrace.h | 12 ++++++++++++ arch/m68knommu/kernel/ptrace.c | 18 +++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) (limited to 'arch') diff --git a/arch/m68k/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace.h index 8c9194b98548..beb209195871 100644 --- a/arch/m68k/include/asm/ptrace.h +++ b/arch/m68k/include/asm/ptrace.h @@ -82,6 +82,18 @@ struct switch_stack { #define instruction_pointer(regs) ((regs)->pc) #define profile_pc(regs) instruction_pointer(regs) extern void show_regs(struct pt_regs *); + +/* + * These are defined as per linux/ptrace.h. + */ +struct task_struct; + +#ifndef CONFIG_MMU +#define arch_has_single_step() (1) +extern void user_enable_single_step(struct task_struct *); +extern void user_disable_single_step(struct task_struct *); +#endif + #endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */ #endif /* _M68K_PTRACE_H */ diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c index ef70ca070ce2..4d3828959fb0 100644 --- a/arch/m68knommu/kernel/ptrace.c +++ b/arch/m68knommu/kernel/ptrace.c @@ -86,6 +86,20 @@ static inline int put_reg(struct task_struct *task, int regno, return 0; } +void user_enable_single_step(struct task_struct *task) +{ + unsigned long srflags; + srflags = get_reg(task, PT_SR) | (TRACE_BITS << 16); + put_reg(task, PT_SR, srflags); +} + +void user_disable_single_step(struct task_struct *task) +{ + unsigned long srflags; + srflags = get_reg(task, PT_SR) & ~(TRACE_BITS << 16); + put_reg(task, PT_SR, srflags); +} + /* * Called by kernel/ptrace.c when detaching.. * @@ -93,10 +107,8 @@ static inline int put_reg(struct task_struct *task, int regno, */ void ptrace_disable(struct task_struct *child) { - unsigned long tmp; /* make sure the single step bit is not set. */ - tmp = get_reg(child, PT_SR) & ~(TRACE_BITS << 16); - put_reg(child, PT_SR, tmp); + user_disable_single_step(child); } long arch_ptrace(struct task_struct *child, long request, long addr, long data) -- cgit v1.2.3 From c23b6538d08c8da5e401b8d7c912b322e8ec9c26 Mon Sep 17 00:00:00 2001 From: Greg Ungerer Date: Tue, 7 Jul 2009 15:32:08 +1000 Subject: m68knommu: add a task_pt_regs() macro Add a task_pt_regs() macro as per the CONFIG_UTRACE requirements. Signed-off-by: Greg Ungerer --- arch/m68k/include/asm/processor.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch') diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h index 74fd674b15ad..cbd3d4751dd2 100644 --- a/arch/m68k/include/asm/processor.h +++ b/arch/m68k/include/asm/processor.h @@ -165,6 +165,8 @@ unsigned long get_wchan(struct task_struct *p); eip; }) #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) +#define task_pt_regs(tsk) ((struct pt_regs *) ((tsk)->thread.esp0)) + #define cpu_relax() barrier() #endif -- cgit v1.2.3 From 10f204e5ad4e0c72aa007c00cb76c1d5a577032d Mon Sep 17 00:00:00 2001 From: Greg Ungerer Date: Fri, 30 Oct 2009 14:58:58 +1000 Subject: m68knommu: rename BSS define in linker script The "BSS" define name now used in asm-generic/vmlinux.lds.h (introduced in commit ef53dae8658cf0e93d380983824a661067948d87) clashes with the internal "BSS" define in the m68knommu vmlinux.lds.S linker script. So rename it. Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 2736a5e309c0..6e10d25f872d 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -15,7 +15,7 @@ #define TEXT ram #define DATA ram #define INIT ram -#define BSS ram +#define BSSS ram #endif #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL) #define RAM_START CONFIG_RAMBASE @@ -27,7 +27,7 @@ #define TEXT rom #define DATA ram #define INIT ram -#define BSS ram +#define BSSS ram #endif #ifndef DATA_ADDR @@ -192,7 +192,7 @@ SECTIONS { . = ALIGN(4) ; _ebss = . ; _end = . ; - } > BSS + } > BSSS DISCARDS } -- cgit v1.2.3 From f4bed4fb17417085d00e4fd1dc285db0330e5945 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 18 Oct 2009 13:23:49 -0400 Subject: m68knommu: Don't hardcode the value of PAGE_SIZE in the linker script. Signed-off-by: Tim Abbott Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 6e10d25f872d..a0108fd6d341 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -8,6 +8,7 @@ */ #include +#include #if defined(CONFIG_RAMKERNEL) #define RAM_START CONFIG_KERNELBASE @@ -155,7 +156,7 @@ SECTIONS { } > DATA .init : { - . = ALIGN(4096); + . = ALIGN(PAGE_SIZE); __init_begin = .; _sinittext = .; INIT_TEXT @@ -180,7 +181,7 @@ SECTIONS { *(.init.ramfs) __initramfs_end = .; #endif - . = ALIGN(4096); + . = ALIGN(PAGE_SIZE); __init_end = .; } > INIT -- cgit v1.2.3 From d6cd1f0c38c9820472fb898cb6fa1b3fc42a85a8 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 18 Oct 2009 13:23:50 -0400 Subject: m68knommu: Make THREAD_SIZE available to assembly files. Signed-off-by: Tim Abbott Cc: Greg Ungerer Signed-off-by: Greg Ungerer --- arch/m68k/include/asm/thread_info_no.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arch') diff --git a/arch/m68k/include/asm/thread_info_no.h b/arch/m68k/include/asm/thread_info_no.h index c2bde5e24b0b..a6512bfdd01d 100644 --- a/arch/m68k/include/asm/thread_info_no.h +++ b/arch/m68k/include/asm/thread_info_no.h @@ -12,8 +12,6 @@ #ifdef __KERNEL__ -#ifndef __ASSEMBLY__ - /* * Size of kernel stack for each process. This must be a power of 2... */ @@ -28,6 +26,8 @@ */ #define THREAD_SIZE (PAGE_SIZE< Date: Sun, 18 Oct 2009 13:23:51 -0400 Subject: m68knommu: Use INIT_TASK_DATA and CACHELINE_ALIGNED_DATA. Signed-off-by: Tim Abbott Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index a0108fd6d341..d6c814e4055b 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -9,6 +9,7 @@ #include #include +#include #if defined(CONFIG_RAMKERNEL) #define RAM_START CONFIG_KERNELBASE @@ -148,10 +149,8 @@ SECTIONS { . = ALIGN(4); _sdata = . ; DATA_DATA - . = ALIGN(32); - *(.data.cacheline_aligned) - . = ALIGN(8192) ; - *(.data.init_task) + CACHELINE_ALIGNED_DATA(32) + INIT_TASK_DATA(THREAD_SIZE) _edata = . ; } > DATA -- cgit v1.2.3 From 84bd75715509c862eb9f536c4181dfa2b6d408dc Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 18 Oct 2009 13:23:52 -0400 Subject: m68knommu: Use more macros inside the .init section. Signed-off-by: Tim Abbott Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index d6c814e4055b..f20de3a6c687 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -161,25 +161,11 @@ SECTIONS { INIT_TEXT _einittext = .; INIT_DATA - . = ALIGN(16); - __setup_start = .; - *(.init.setup) - __setup_end = .; - __initcall_start = .; - INITCALLS - __initcall_end = .; - __con_initcall_start = .; - *(.con_initcall.init) - __con_initcall_end = .; - __security_initcall_start = .; - *(.security_initcall.init) - __security_initcall_end = .; -#ifdef CONFIG_BLK_DEV_INITRD - . = ALIGN(4); - __initramfs_start = .; - *(.init.ramfs) - __initramfs_end = .; -#endif + INIT_SETUP(16) + INIT_CALLS + CON_INITCALL + SECURITY_INITCALL + INIT_RAM_FS . = ALIGN(PAGE_SIZE); __init_end = .; } > INIT -- cgit v1.2.3 From a90a44ee901a1892473864d1a6c267dd04f2c96d Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 18 Oct 2009 13:23:53 -0400 Subject: m68knommu: Move __init_begin out of the .init section. Signed-off-by: Tim Abbott Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index f20de3a6c687..19468d0a1f89 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -157,6 +157,8 @@ SECTIONS { .init : { . = ALIGN(PAGE_SIZE); __init_begin = .; + } > INIT + .init : { _sinittext = .; INIT_TEXT _einittext = .; -- cgit v1.2.3 From 995bcd3dc1924095ddda45d0f8ece6bf6124d74e Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 18 Oct 2009 13:23:54 -0400 Subject: m68knommu: Move __init_end out of the .init section. Signed-off-by: Tim Abbott Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 19468d0a1f89..884924982dd9 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -168,6 +168,8 @@ SECTIONS { CON_INITCALL SECURITY_INITCALL INIT_RAM_FS + } > INIT + .init : { . = ALIGN(PAGE_SIZE); __init_end = .; } > INIT -- cgit v1.2.3 From 53749f735a5b79156b56e75ee379be9e299b5e4b Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 18 Oct 2009 13:23:55 -0400 Subject: m68knommu: Split the .init section into INIT_TEXT_SECTION and INIT_DATA_SECTION. Signed-off-by: Tim Abbott Signed-off-by: Greg Ungerer --- arch/m68knommu/kernel/vmlinux.lds.S | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'arch') diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 884924982dd9..9f1784f586b9 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -154,22 +154,13 @@ SECTIONS { _edata = . ; } > DATA - .init : { + .init.text : { . = ALIGN(PAGE_SIZE); __init_begin = .; } > INIT - .init : { - _sinittext = .; - INIT_TEXT - _einittext = .; - INIT_DATA - INIT_SETUP(16) - INIT_CALLS - CON_INITCALL - SECURITY_INITCALL - INIT_RAM_FS - } > INIT - .init : { + INIT_TEXT_SECTION(PAGE_SIZE) > INIT + INIT_DATA_SECTION(16) > INIT + .init.data : { . = ALIGN(PAGE_SIZE); __init_end = .; } > INIT -- cgit v1.2.3 From 96c612427edab65dddd88ad61d732501cc5f128d Mon Sep 17 00:00:00 2001 From: Steven King Date: Fri, 13 Nov 2009 12:18:37 -0800 Subject: m68knommu: export clk_* symbols in clk.c export the clk_* stubs defined in arch/m68knommu/platform/coldfire/clk.c so they can be used by modules. Signed-off-by: Steven King Signed-off-by: Greg Ungerer --- arch/m68knommu/platform/coldfire/clk.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/m68knommu/platform/coldfire/clk.c b/arch/m68knommu/platform/coldfire/clk.c index 7cdbf445b28f..9f1260c5e2ad 100644 --- a/arch/m68knommu/platform/coldfire/clk.c +++ b/arch/m68knommu/platform/coldfire/clk.c @@ -9,6 +9,7 @@ /***************************************************************************/ #include +#include #include #include @@ -18,23 +19,27 @@ struct clk *clk_get(struct device *dev, const char *id) { return NULL; } +EXPORT_SYMBOL(clk_get); int clk_enable(struct clk *clk) { return 0; } +EXPORT_SYMBOL(clk_enable); void clk_disable(struct clk *clk) { } +EXPORT_SYMBOL(clk_disable); void clk_put(struct clk *clk) { } +EXPORT_SYMBOL(clk_put); unsigned long clk_get_rate(struct clk *clk) { return MCF_CLK; } - +EXPORT_SYMBOL(clk_get_rate); /***************************************************************************/ -- cgit v1.2.3