Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: m68knommu: export clk_* symbols in clk.c m68knommu: Split the .init section into INIT_TEXT_SECTION and INIT_DATA_SECTION. m68knommu: Move __init_end out of the .init section. m68knommu: Move __init_begin out of the .init section. m68knommu: Use more macros inside the .init section. m68knommu: Use INIT_TASK_DATA and CACHELINE_ALIGNED_DATA. m68knommu: Make THREAD_SIZE available to assembly files. m68knommu: Don't hardcode the value of PAGE_SIZE in the linker script. m68knommu: rename BSS define in linker script m68knommu: add a task_pt_regs() macro m68knommu: define arch_has_single_step() and friends m68knommu: add uboot commandline argument passing support m68knommu: Coldfire GPIO corrections m68knommu: move mcf_remove to .devexit.text Fixed up (?) conflict in arch/m68k/include/asm/ptrace.h
This commit is contained in:
commit
701791cc3c
|
@ -165,6 +165,8 @@ unsigned long get_wchan(struct task_struct *p);
|
||||||
eip; })
|
eip; })
|
||||||
#define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp)
|
#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()
|
#define cpu_relax() barrier()
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -86,7 +86,7 @@ struct switch_stack {
|
||||||
extern void show_regs(struct pt_regs *);
|
extern void show_regs(struct pt_regs *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are defined as per linux/ptrace.h, which see.
|
* These are defined as per linux/ptrace.h.
|
||||||
*/
|
*/
|
||||||
struct task_struct;
|
struct task_struct;
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,6 @@
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Size of kernel stack for each process. This must be a power of 2...
|
* Size of kernel stack for each process. This must be a power of 2...
|
||||||
*/
|
*/
|
||||||
|
@ -28,6 +26,8 @@
|
||||||
*/
|
*/
|
||||||
#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
|
#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* low level task data.
|
* low level task data.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -533,6 +533,13 @@ config AVNET
|
||||||
default y
|
default y
|
||||||
depends on (AVNET5282)
|
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
|
config 4KSTACKS
|
||||||
bool "Use 4Kb for kernel stacks instead of 8Kb"
|
bool "Use 4Kb for kernel stacks instead of 8Kb"
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/initrd.h>
|
||||||
|
#include <linux/root_dev.h>
|
||||||
|
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
@ -52,7 +54,6 @@ void (*mach_reset)(void);
|
||||||
void (*mach_halt)(void);
|
void (*mach_halt)(void);
|
||||||
void (*mach_power_off)(void);
|
void (*mach_power_off)(void);
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_M68000
|
#ifdef CONFIG_M68000
|
||||||
#define CPU "MC68000"
|
#define CPU "MC68000"
|
||||||
#endif
|
#endif
|
||||||
|
@ -111,6 +112,69 @@ void (*mach_power_off)(void);
|
||||||
extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
|
extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
|
||||||
extern int _ramstart, _ramend;
|
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)
|
void __init setup_arch(char **cmdline_p)
|
||||||
{
|
{
|
||||||
int bootmap_size;
|
int bootmap_size;
|
||||||
|
@ -128,7 +192,24 @@ void __init setup_arch(char **cmdline_p)
|
||||||
#if defined(CONFIG_BOOTPARAM)
|
#if defined(CONFIG_BOOTPARAM)
|
||||||
strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line));
|
strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line));
|
||||||
command_line[sizeof(command_line) - 1] = 0;
|
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");
|
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);
|
free_bootmem(memory_start, memory_end - memory_start);
|
||||||
reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT);
|
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.
|
* Get kmalloc into gear.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm-generic/vmlinux.lds.h>
|
#include <asm-generic/vmlinux.lds.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
#include <asm/thread_info.h>
|
||||||
|
|
||||||
#if defined(CONFIG_RAMKERNEL)
|
#if defined(CONFIG_RAMKERNEL)
|
||||||
#define RAM_START CONFIG_KERNELBASE
|
#define RAM_START CONFIG_KERNELBASE
|
||||||
|
@ -15,7 +17,7 @@
|
||||||
#define TEXT ram
|
#define TEXT ram
|
||||||
#define DATA ram
|
#define DATA ram
|
||||||
#define INIT ram
|
#define INIT ram
|
||||||
#define BSS ram
|
#define BSSS ram
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
|
#if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
|
||||||
#define RAM_START CONFIG_RAMBASE
|
#define RAM_START CONFIG_RAMBASE
|
||||||
|
@ -27,7 +29,7 @@
|
||||||
#define TEXT rom
|
#define TEXT rom
|
||||||
#define DATA ram
|
#define DATA ram
|
||||||
#define INIT ram
|
#define INIT ram
|
||||||
#define BSS ram
|
#define BSSS ram
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef DATA_ADDR
|
#ifndef DATA_ADDR
|
||||||
|
@ -147,40 +149,19 @@ SECTIONS {
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_sdata = . ;
|
_sdata = . ;
|
||||||
DATA_DATA
|
DATA_DATA
|
||||||
. = ALIGN(32);
|
CACHELINE_ALIGNED_DATA(32)
|
||||||
*(.data.cacheline_aligned)
|
INIT_TASK_DATA(THREAD_SIZE)
|
||||||
. = ALIGN(8192) ;
|
|
||||||
*(.data.init_task)
|
|
||||||
_edata = . ;
|
_edata = . ;
|
||||||
} > DATA
|
} > DATA
|
||||||
|
|
||||||
.init : {
|
.init.text : {
|
||||||
. = ALIGN(4096);
|
. = ALIGN(PAGE_SIZE);
|
||||||
__init_begin = .;
|
__init_begin = .;
|
||||||
_sinittext = .;
|
} > INIT
|
||||||
INIT_TEXT
|
INIT_TEXT_SECTION(PAGE_SIZE) > INIT
|
||||||
_einittext = .;
|
INIT_DATA_SECTION(16) > INIT
|
||||||
INIT_DATA
|
.init.data : {
|
||||||
. = ALIGN(16);
|
. = ALIGN(PAGE_SIZE);
|
||||||
__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
|
|
||||||
. = ALIGN(4096);
|
|
||||||
__init_end = .;
|
__init_end = .;
|
||||||
} > INIT
|
} > INIT
|
||||||
|
|
||||||
|
@ -192,7 +173,7 @@ SECTIONS {
|
||||||
. = ALIGN(4) ;
|
. = ALIGN(4) ;
|
||||||
_ebss = . ;
|
_ebss = . ;
|
||||||
_end = . ;
|
_end = . ;
|
||||||
} > BSS
|
} > BSSS
|
||||||
|
|
||||||
DISCARDS
|
DISCARDS
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
|
||||||
.direction_output = mcf_gpio_direction_output,
|
.direction_output = mcf_gpio_direction_output,
|
||||||
.get = mcf_gpio_get_value,
|
.get = mcf_gpio_get_value,
|
||||||
.set = mcf_gpio_set_value,
|
.set = mcf_gpio_set_value,
|
||||||
.ngpio = 8,
|
.base = 1,
|
||||||
|
.ngpio = 7,
|
||||||
},
|
},
|
||||||
.pddr = MCFEPORT_EPDDR,
|
.pddr = MCFEPORT_EPDDR,
|
||||||
.podr = MCFEPORT_EPDR,
|
.podr = MCFEPORT_EPDR,
|
||||||
|
@ -244,7 +245,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
|
||||||
.get = mcf_gpio_get_value,
|
.get = mcf_gpio_get_value,
|
||||||
.set = mcf_gpio_set_value_fast,
|
.set = mcf_gpio_set_value_fast,
|
||||||
.base = 96,
|
.base = 96,
|
||||||
.ngpio = 4,
|
.ngpio = 8,
|
||||||
},
|
},
|
||||||
.pddr = MCFGPIO_PDDR_TIMER,
|
.pddr = MCFGPIO_PDDR_TIMER,
|
||||||
.podr = MCFGPIO_PODR_TIMER,
|
.podr = MCFGPIO_PODR_TIMER,
|
||||||
|
|
|
@ -31,7 +31,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
|
||||||
.direction_output = mcf_gpio_direction_output,
|
.direction_output = mcf_gpio_direction_output,
|
||||||
.get = mcf_gpio_get_value,
|
.get = mcf_gpio_get_value,
|
||||||
.set = mcf_gpio_set_value,
|
.set = mcf_gpio_set_value,
|
||||||
.ngpio = 8,
|
.base = 1,
|
||||||
|
.ngpio = 7,
|
||||||
},
|
},
|
||||||
.pddr = MCFEPORT_EPDDR,
|
.pddr = MCFEPORT_EPDDR,
|
||||||
.podr = MCFEPORT_EPDR,
|
.podr = MCFEPORT_EPDR,
|
||||||
|
@ -263,7 +264,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
|
||||||
.direction_output = mcf_gpio_direction_output,
|
.direction_output = mcf_gpio_direction_output,
|
||||||
.get = mcf_gpio_get_value,
|
.get = mcf_gpio_get_value,
|
||||||
.set = mcf_gpio_set_value,
|
.set = mcf_gpio_set_value,
|
||||||
.ngpio = 8,
|
.base = 1,
|
||||||
|
.ngpio = 7,
|
||||||
},
|
},
|
||||||
.pddr = MCFEPORT_EPDDR,
|
.pddr = MCFEPORT_EPDDR,
|
||||||
.podr = MCFEPORT_EPDR,
|
.podr = MCFEPORT_EPDR,
|
||||||
|
|
|
@ -31,7 +31,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
|
||||||
.get = mcf_gpio_get_value,
|
.get = mcf_gpio_get_value,
|
||||||
.set = mcf_gpio_set_value,
|
.set = mcf_gpio_set_value,
|
||||||
.base = 1,
|
.base = 1,
|
||||||
.ngpio = 8,
|
.ngpio = 7,
|
||||||
},
|
},
|
||||||
.pddr = MCFEPORT_EPDDR,
|
.pddr = MCFEPORT_EPDDR,
|
||||||
.podr = MCFEPORT_EPDR,
|
.podr = MCFEPORT_EPDR,
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <asm/coldfire.h>
|
#include <asm/coldfire.h>
|
||||||
|
|
||||||
|
@ -18,23 +19,27 @@ struct clk *clk_get(struct device *dev, const char *id)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(clk_get);
|
||||||
|
|
||||||
int clk_enable(struct clk *clk)
|
int clk_enable(struct clk *clk)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(clk_enable);
|
||||||
|
|
||||||
void clk_disable(struct clk *clk)
|
void clk_disable(struct clk *clk)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(clk_disable);
|
||||||
|
|
||||||
void clk_put(struct clk *clk)
|
void clk_put(struct clk *clk)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(clk_put);
|
||||||
|
|
||||||
unsigned long clk_get_rate(struct clk *clk)
|
unsigned long clk_get_rate(struct clk *clk)
|
||||||
{
|
{
|
||||||
return MCF_CLK;
|
return MCF_CLK;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(clk_get_rate);
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
|
|
@ -106,6 +106,9 @@
|
||||||
.global _ramvec
|
.global _ramvec
|
||||||
.global _ramstart
|
.global _ramstart
|
||||||
.global _ramend
|
.global _ramend
|
||||||
|
#if defined(CONFIG_UBOOT)
|
||||||
|
.global _init_sp
|
||||||
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
@ -124,6 +127,10 @@ _ramstart:
|
||||||
.long 0
|
.long 0
|
||||||
_ramend:
|
_ramend:
|
||||||
.long 0
|
.long 0
|
||||||
|
#if defined(CONFIG_UBOOT)
|
||||||
|
_init_sp:
|
||||||
|
.long 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
@ -137,6 +144,9 @@ __HEAD
|
||||||
_start:
|
_start:
|
||||||
nop /* filler */
|
nop /* filler */
|
||||||
movew #0x2700, %sr /* no interrupts */
|
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
|
* Do any platform or board specific setup now. Most boards
|
||||||
|
|
|
@ -602,7 +602,7 @@ static int __devinit mcf_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
static int mcf_remove(struct platform_device *pdev)
|
static int __devexit mcf_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct uart_port *port;
|
struct uart_port *port;
|
||||||
int i;
|
int i;
|
||||||
|
|
Loading…
Reference in New Issue