diff options
Diffstat (limited to 'arch/mn10300')
-rw-r--r-- | arch/mn10300/include/asm/thread_info.h | 2 | ||||
-rw-r--r-- | arch/mn10300/include/asm/unistd.h | 10 | ||||
-rw-r--r-- | arch/mn10300/include/uapi/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/mn10300/kernel/process.c | 71 | ||||
-rw-r--r-- | arch/mn10300/kernel/smp.c | 7 | ||||
-rw-r--r-- | arch/mn10300/kernel/traps.c | 11 | ||||
-rw-r--r-- | arch/mn10300/mm/init.c | 23 |
7 files changed, 12 insertions, 114 deletions
diff --git a/arch/mn10300/include/asm/thread_info.h b/arch/mn10300/include/asm/thread_info.h index f90062b0622d..224b4262486d 100644 --- a/arch/mn10300/include/asm/thread_info.h +++ b/arch/mn10300/include/asm/thread_info.h | |||
@@ -165,8 +165,6 @@ void arch_release_thread_info(struct thread_info *ti); | |||
165 | #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ | 165 | #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ |
166 | #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ | 166 | #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ |
167 | 167 | ||
168 | #define tsk_is_polling(t) test_tsk_thread_flag(t, TIF_POLLING_NRFLAG) | ||
169 | |||
170 | #endif /* __KERNEL__ */ | 168 | #endif /* __KERNEL__ */ |
171 | 169 | ||
172 | #endif /* _ASM_THREAD_INFO_H */ | 170 | #endif /* _ASM_THREAD_INFO_H */ |
diff --git a/arch/mn10300/include/asm/unistd.h b/arch/mn10300/include/asm/unistd.h index 7f9d9adfa51e..9d4e2d1ef90e 100644 --- a/arch/mn10300/include/asm/unistd.h +++ b/arch/mn10300/include/asm/unistd.h | |||
@@ -45,14 +45,4 @@ | |||
45 | #define __ARCH_WANT_SYS_VFORK | 45 | #define __ARCH_WANT_SYS_VFORK |
46 | #define __ARCH_WANT_SYS_CLONE | 46 | #define __ARCH_WANT_SYS_CLONE |
47 | 47 | ||
48 | /* | ||
49 | * "Conditional" syscalls | ||
50 | * | ||
51 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
52 | * but it doesn't work on all toolchains, so we just do it by hand | ||
53 | */ | ||
54 | #ifndef cond_syscall | ||
55 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall"); | ||
56 | #endif | ||
57 | |||
58 | #endif /* _ASM_UNISTD_H */ | 48 | #endif /* _ASM_UNISTD_H */ |
diff --git a/arch/mn10300/include/uapi/asm/socket.h b/arch/mn10300/include/uapi/asm/socket.h index 5c7c7c988544..b4ce844c9391 100644 --- a/arch/mn10300/include/uapi/asm/socket.h +++ b/arch/mn10300/include/uapi/asm/socket.h | |||
@@ -72,4 +72,6 @@ | |||
72 | 72 | ||
73 | #define SO_LOCK_FILTER 44 | 73 | #define SO_LOCK_FILTER 44 |
74 | 74 | ||
75 | #define SO_SELECT_ERR_QUEUE 45 | ||
76 | |||
75 | #endif /* _ASM_SOCKET_H */ | 77 | #endif /* _ASM_SOCKET_H */ |
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index 84f4e97e3074..3707da583d05 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
@@ -50,77 +50,19 @@ unsigned long thread_saved_pc(struct task_struct *tsk) | |||
50 | void (*pm_power_off)(void); | 50 | void (*pm_power_off)(void); |
51 | EXPORT_SYMBOL(pm_power_off); | 51 | EXPORT_SYMBOL(pm_power_off); |
52 | 52 | ||
53 | #if !defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU) | ||
54 | /* | ||
55 | * we use this if we don't have any better idle routine | ||
56 | */ | ||
57 | static void default_idle(void) | ||
58 | { | ||
59 | local_irq_disable(); | ||
60 | if (!need_resched()) | ||
61 | safe_halt(); | ||
62 | else | ||
63 | local_irq_enable(); | ||
64 | } | ||
65 | |||
66 | #else /* !CONFIG_SMP || CONFIG_HOTPLUG_CPU */ | ||
67 | /* | 53 | /* |
68 | * On SMP it's slightly faster (but much more power-consuming!) | 54 | * On SMP it's slightly faster (but much more power-consuming!) |
69 | * to poll the ->work.need_resched flag instead of waiting for the | 55 | * to poll the ->work.need_resched flag instead of waiting for the |
70 | * cross-CPU IPI to arrive. Use this option with caution. | 56 | * cross-CPU IPI to arrive. Use this option with caution. |
57 | * | ||
58 | * tglx: No idea why this depends on HOTPLUG_CPU !?! | ||
71 | */ | 59 | */ |
72 | static inline void poll_idle(void) | 60 | #if !defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU) |
73 | { | 61 | void arch_cpu_idle(void) |
74 | int oldval; | ||
75 | |||
76 | local_irq_enable(); | ||
77 | |||
78 | /* | ||
79 | * Deal with another CPU just having chosen a thread to | ||
80 | * run here: | ||
81 | */ | ||
82 | oldval = test_and_clear_thread_flag(TIF_NEED_RESCHED); | ||
83 | |||
84 | if (!oldval) { | ||
85 | set_thread_flag(TIF_POLLING_NRFLAG); | ||
86 | while (!need_resched()) | ||
87 | cpu_relax(); | ||
88 | clear_thread_flag(TIF_POLLING_NRFLAG); | ||
89 | } else { | ||
90 | set_need_resched(); | ||
91 | } | ||
92 | } | ||
93 | #endif /* !CONFIG_SMP || CONFIG_HOTPLUG_CPU */ | ||
94 | |||
95 | /* | ||
96 | * the idle thread | ||
97 | * - there's no useful work to be done, so just try to conserve power and have | ||
98 | * a low exit latency (ie sit in a loop waiting for somebody to say that | ||
99 | * they'd like to reschedule) | ||
100 | */ | ||
101 | void cpu_idle(void) | ||
102 | { | 62 | { |
103 | /* endless idle loop with no priority at all */ | 63 | safe_halt(); |
104 | for (;;) { | ||
105 | rcu_idle_enter(); | ||
106 | while (!need_resched()) { | ||
107 | void (*idle)(void); | ||
108 | |||
109 | smp_rmb(); | ||
110 | if (!idle) { | ||
111 | #if defined(CONFIG_SMP) && !defined(CONFIG_HOTPLUG_CPU) | ||
112 | idle = poll_idle; | ||
113 | #else /* CONFIG_SMP && !CONFIG_HOTPLUG_CPU */ | ||
114 | idle = default_idle; | ||
115 | #endif /* CONFIG_SMP && !CONFIG_HOTPLUG_CPU */ | ||
116 | } | ||
117 | idle(); | ||
118 | } | ||
119 | rcu_idle_exit(); | ||
120 | |||
121 | schedule_preempt_disabled(); | ||
122 | } | ||
123 | } | 64 | } |
65 | #endif | ||
124 | 66 | ||
125 | void release_segments(struct mm_struct *mm) | 67 | void release_segments(struct mm_struct *mm) |
126 | { | 68 | { |
@@ -155,6 +97,7 @@ void machine_power_off(void) | |||
155 | 97 | ||
156 | void show_regs(struct pt_regs *regs) | 98 | void show_regs(struct pt_regs *regs) |
157 | { | 99 | { |
100 | show_regs_print_info(KERN_DEFAULT); | ||
158 | } | 101 | } |
159 | 102 | ||
160 | /* | 103 | /* |
diff --git a/arch/mn10300/kernel/smp.c b/arch/mn10300/kernel/smp.c index 5d7e152a23b7..a17f9c9c14c9 100644 --- a/arch/mn10300/kernel/smp.c +++ b/arch/mn10300/kernel/smp.c | |||
@@ -675,7 +675,7 @@ int __init start_secondary(void *unused) | |||
675 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | 675 | #ifdef CONFIG_GENERIC_CLOCKEVENTS |
676 | init_clockevents(); | 676 | init_clockevents(); |
677 | #endif | 677 | #endif |
678 | cpu_idle(); | 678 | cpu_startup_entry(CPUHP_ONLINE); |
679 | return 0; | 679 | return 0; |
680 | } | 680 | } |
681 | 681 | ||
@@ -935,8 +935,6 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle) | |||
935 | int timeout; | 935 | int timeout; |
936 | 936 | ||
937 | #ifdef CONFIG_HOTPLUG_CPU | 937 | #ifdef CONFIG_HOTPLUG_CPU |
938 | if (num_online_cpus() == 1) | ||
939 | disable_hlt(); | ||
940 | if (sleep_mode[cpu]) | 938 | if (sleep_mode[cpu]) |
941 | run_wakeup_cpu(cpu); | 939 | run_wakeup_cpu(cpu); |
942 | #endif /* CONFIG_HOTPLUG_CPU */ | 940 | #endif /* CONFIG_HOTPLUG_CPU */ |
@@ -1003,9 +1001,6 @@ int __cpu_disable(void) | |||
1003 | void __cpu_die(unsigned int cpu) | 1001 | void __cpu_die(unsigned int cpu) |
1004 | { | 1002 | { |
1005 | run_sleep_cpu(cpu); | 1003 | run_sleep_cpu(cpu); |
1006 | |||
1007 | if (num_online_cpus() == 1) | ||
1008 | enable_hlt(); | ||
1009 | } | 1004 | } |
1010 | 1005 | ||
1011 | #ifdef CONFIG_MN10300_CACHE_ENABLED | 1006 | #ifdef CONFIG_MN10300_CACHE_ENABLED |
diff --git a/arch/mn10300/kernel/traps.c b/arch/mn10300/kernel/traps.c index b900e5afa0ae..a7a987c7954f 100644 --- a/arch/mn10300/kernel/traps.c +++ b/arch/mn10300/kernel/traps.c | |||
@@ -294,17 +294,6 @@ void show_stack(struct task_struct *task, unsigned long *sp) | |||
294 | } | 294 | } |
295 | 295 | ||
296 | /* | 296 | /* |
297 | * the architecture-independent dump_stack generator | ||
298 | */ | ||
299 | void dump_stack(void) | ||
300 | { | ||
301 | unsigned long stack; | ||
302 | |||
303 | show_stack(current, &stack); | ||
304 | } | ||
305 | EXPORT_SYMBOL(dump_stack); | ||
306 | |||
307 | /* | ||
308 | * dump the register file in the specified exception frame | 297 | * dump the register file in the specified exception frame |
309 | */ | 298 | */ |
310 | void show_registers_only(struct pt_regs *regs) | 299 | void show_registers_only(struct pt_regs *regs) |
diff --git a/arch/mn10300/mm/init.c b/arch/mn10300/mm/init.c index e57e5bc23562..5a8ace63a6b4 100644 --- a/arch/mn10300/mm/init.c +++ b/arch/mn10300/mm/init.c | |||
@@ -139,30 +139,11 @@ void __init mem_init(void) | |||
139 | } | 139 | } |
140 | 140 | ||
141 | /* | 141 | /* |
142 | * | ||
143 | */ | ||
144 | void free_init_pages(char *what, unsigned long begin, unsigned long end) | ||
145 | { | ||
146 | unsigned long addr; | ||
147 | |||
148 | for (addr = begin; addr < end; addr += PAGE_SIZE) { | ||
149 | ClearPageReserved(virt_to_page(addr)); | ||
150 | init_page_count(virt_to_page(addr)); | ||
151 | memset((void *) addr, 0xcc, PAGE_SIZE); | ||
152 | free_page(addr); | ||
153 | totalram_pages++; | ||
154 | } | ||
155 | printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10); | ||
156 | } | ||
157 | |||
158 | /* | ||
159 | * recycle memory containing stuff only required for initialisation | 142 | * recycle memory containing stuff only required for initialisation |
160 | */ | 143 | */ |
161 | void free_initmem(void) | 144 | void free_initmem(void) |
162 | { | 145 | { |
163 | free_init_pages("unused kernel memory", | 146 | free_initmem_default(POISON_FREE_INITMEM); |
164 | (unsigned long) &__init_begin, | ||
165 | (unsigned long) &__init_end); | ||
166 | } | 147 | } |
167 | 148 | ||
168 | /* | 149 | /* |
@@ -171,6 +152,6 @@ void free_initmem(void) | |||
171 | #ifdef CONFIG_BLK_DEV_INITRD | 152 | #ifdef CONFIG_BLK_DEV_INITRD |
172 | void free_initrd_mem(unsigned long start, unsigned long end) | 153 | void free_initrd_mem(unsigned long start, unsigned long end) |
173 | { | 154 | { |
174 | free_init_pages("initrd memory", start, end); | 155 | free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd"); |
175 | } | 156 | } |
176 | #endif | 157 | #endif |