diff options
Diffstat (limited to 'arch/m68knommu/kernel')
-rw-r--r-- | arch/m68knommu/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/m68knommu/kernel/ptrace.c | 17 | ||||
-rw-r--r-- | arch/m68knommu/kernel/setup.c | 65 | ||||
-rw-r--r-- | arch/m68knommu/kernel/traps.c | 1 |
4 files changed, 19 insertions, 66 deletions
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c index 941955dc3b7c..846f97534685 100644 --- a/arch/m68knommu/kernel/process.c +++ b/arch/m68knommu/kernel/process.c @@ -377,7 +377,7 @@ unsigned long get_wchan(struct task_struct *p) fp = ((struct switch_stack *)p->thread.ksp)->a6; do { if (fp < stack_page+sizeof(struct thread_info) || - fp >= 8184+stack_page) + fp >= THREAD_SIZE-8+stack_page) return 0; pc = ((unsigned long *)fp)[1]; if (!in_sched_functions(pc)) diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c index f54b6a3dfecb..ef70ca070ce2 100644 --- a/arch/m68knommu/kernel/ptrace.c +++ b/arch/m68knommu/kernel/ptrace.c @@ -106,17 +106,9 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) switch (request) { /* when I and D space are separate, these will need to be fixed. */ case PTRACE_PEEKTEXT: /* read word at location addr. */ - case PTRACE_PEEKDATA: { - unsigned long tmp; - int copied; - - copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); - ret = -EIO; - if (copied != sizeof(tmp)) - break; - ret = put_user(tmp,(unsigned long *) data); + case PTRACE_PEEKDATA: + ret = generic_ptrace_peekdata(child, addr, data); break; - } /* read the word at location addr in the USER area. */ case PTRACE_PEEKUSR: { @@ -159,10 +151,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) /* when I and D space are separate, this will have to be fixed. */ case PTRACE_POKETEXT: /* write the word at location addr. */ case PTRACE_POKEDATA: - ret = 0; - if (access_process_vm(child, addr, &data, sizeof(data), 1) == sizeof(data)) - break; - ret = -EIO; + ret = generic_ptrace_pokedata(child, addr, data); break; case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 8133b1047353..80f4e9d74ac1 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c @@ -1,8 +1,8 @@ /* * linux/arch/m68knommu/kernel/setup.c * - * Copyright (C) 1999-2004 Greg Ungerer (gerg@snapgear.com) - * Copyright (C) 1998,1999 D. Jeff Dionne <jeff@lineo.ca> + * Copyright (C) 1999-2007 Greg Ungerer (gerg@snapgear.com) + * Copyright (C) 1998,1999 D. Jeff Dionne <jeff@uClinux.org> * Copyleft ()) 2000 James D. Schettine {james@telos-systems.com} * Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com> * Copyright (C) 1995 Hamish Macdonald @@ -20,17 +20,13 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/interrupt.h> -#include <linux/fs.h> #include <linux/fb.h> #include <linux/module.h> #include <linux/console.h> -#include <linux/genhd.h> #include <linux/errno.h> #include <linux/string.h> -#include <linux/major.h> #include <linux/bootmem.h> #include <linux/seq_file.h> -#include <linux/root_dev.h> #include <linux/init.h> #include <asm/setup.h> @@ -46,34 +42,19 @@ EXPORT_SYMBOL(memory_end); char __initdata command_line[COMMAND_LINE_SIZE]; -/* setup some dummy routines */ -static void dummy_waitbut(void) -{ -} +void (*mach_trap_init)(void); -void (*mach_sched_init) (irq_handler_t handler); -void (*mach_tick)( void ); -/* machine dependent keyboard functions */ -int (*mach_keyb_init) (void); -int (*mach_kbdrate) (struct kbd_repeat *); -void (*mach_kbd_leds) (unsigned int); -/* machine dependent irq functions */ -void (*mach_init_IRQ) (void); -irq_handler_t mach_default_handler; -int (*mach_get_irq_list) (struct seq_file *, void *); -void (*mach_process_int) (int irq, struct pt_regs *fp); -void (*mach_trap_init) (void); /* machine dependent timer functions */ -unsigned long (*mach_gettimeoffset) (void); -void (*mach_gettod) (int*, int*, int*, int*, int*, int*); -int (*mach_hwclk) (int, struct rtc_time*); -int (*mach_set_clock_mmss) (unsigned long); -void (*mach_mksound)( unsigned int count, unsigned int ticks ); -void (*mach_reset)( void ); -void (*waitbut)(void) = dummy_waitbut; -void (*mach_debug_init)(void); -void (*mach_halt)( void ); -void (*mach_power_off)( void ); +void (*mach_sched_init)(irq_handler_t handler); +void (*mach_tick)(void); +void (*mach_gettod)(int*, int*, int*, int*, int*, int*); +int (*mach_set_clock_mmss)(unsigned long); +unsigned long (*mach_gettimeoffset)(void); + +/* machine dependent reboot functions */ +void (*mach_reset)(void); +void (*mach_halt)(void); +void (*mach_power_off)(void); #ifdef CONFIG_M68000 @@ -134,13 +115,6 @@ void (*mach_power_off)( void ); #define CPU "UNKNOWN" #endif -/* (es) */ -/* note: why is this defined here? the must be a better place to put this */ -#if defined( CONFIG_TELOS) || defined( CONFIG_UCDIMM ) || defined( CONFIG_UCSIMM ) || defined(CONFIG_DRAGEN2) || (defined( CONFIG_PILOT ) && defined( CONFIG_M68328 )) -#define CAT_ROMARRAY -#endif -/* (/es) */ - extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; extern int _ramstart, _ramend; @@ -148,15 +122,8 @@ void setup_arch(char **cmdline_p) { int bootmap_size; -#if defined(CAT_ROMARRAY) && defined(DEBUG) - extern int __data_rom_start; - extern int __data_start; - int *romarray = (int *)((int) &__data_rom_start + - (int)&_edata - (int)&__data_start); -#endif - memory_start = PAGE_ALIGN(_ramstart); - memory_end = _ramend; /* by now the stack is part of the init task */ + memory_end = _ramend; init_mm.start_code = (unsigned long) &_stext; init_mm.end_code = (unsigned long) &_etext; @@ -220,11 +187,7 @@ void setup_arch(char **cmdline_p) (int) &_sbss, (int) &_ebss); printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " "STACK=0x%06x-0x%06x\n", -#ifdef CAT_ROMARRAY - (int) romarray, ((int) romarray) + romarray[2], -#else (int) &_ebss, (int) memory_start, -#endif (int) memory_start, (int) memory_end, (int) memory_end, (int) _ramend); #endif diff --git a/arch/m68knommu/kernel/traps.c b/arch/m68knommu/kernel/traps.c index bed5f47bf568..fde04e1757f7 100644 --- a/arch/m68knommu/kernel/traps.c +++ b/arch/m68knommu/kernel/traps.c @@ -83,6 +83,7 @@ void die_if_kernel(char *str, struct pt_regs *fp, int nr) printk(KERN_EMERG "Process %s (pid: %d, stackpage=%08lx)\n", current->comm, current->pid, PAGE_SIZE+(unsigned long)current); show_stack(NULL, (unsigned long *)fp); + add_taint(TAINT_DIE); do_exit(SIGSEGV); } |