14 #include <linux/module.h>
15 #include <linux/sched.h>
16 #include <linux/kernel.h>
18 #include <linux/stddef.h>
21 #include <linux/reboot.h>
26 #include <linux/elfcore.h>
29 #include <linux/utsname.h>
31 #include <linux/random.h>
35 #include <asm/cacheflush.h>
36 #include <asm/processor.h>
37 #include <asm/stacktrace.h>
41 static const char *
const processor_modes[] = {
42 "UK00",
"UK01",
"UK02",
"UK03",
"UK04",
"UK05",
"UK06",
"UK07",
43 "UK08",
"UK09",
"UK0A",
"UK0B",
"UK0C",
"UK0D",
"UK0E",
"UK0F",
44 "USER",
"REAL",
"INTR",
"PRIV",
"UK14",
"UK15",
"UK16",
"ABRT",
45 "UK18",
"UK19",
"UK1A",
"EXTN",
"UK1C",
"UK1D",
"UK1E",
"SUSR"
57 tick_nohz_idle_enter();
59 while (!need_resched()) {
67 tick_nohz_idle_exit();
74 static char reboot_mode =
'h';
125 if (reboot_mode ==
's') {
138 "201: ldw r0, [%0]\n\t"
139 " cmpsub.a r0, #0\n\t"
173 print_symbol(
"LR is at %s\n", regs->UCreg_lr);
175 "sp : %08lx ip : %08lx fp : %08lx\n",
176 regs->UCreg_pc, regs->UCreg_lr, regs->UCreg_asr,
177 regs->UCreg_sp, regs->UCreg_ip, regs->UCreg_fp);
179 regs->UCreg_26, regs->UCreg_25,
182 regs->UCreg_23, regs->UCreg_22,
183 regs->UCreg_21, regs->UCreg_20);
185 regs->UCreg_19, regs->UCreg_18,
186 regs->UCreg_17, regs->UCreg_16);
188 regs->UCreg_15, regs->UCreg_14,
189 regs->UCreg_13, regs->UCreg_12);
191 regs->UCreg_11, regs->UCreg_10,
192 regs->UCreg_09, regs->UCreg_08);
194 regs->UCreg_07, regs->UCreg_06,
195 regs->UCreg_05, regs->UCreg_04);
197 regs->UCreg_03, regs->UCreg_02,
198 regs->UCreg_01, regs->UCreg_00);
200 flags = regs->UCreg_asr;
217 unsigned int transbase;
218 asm(
"movc %0, p0.c2, #0\n"
220 snprintf(buf,
sizeof(buf),
" Table: %08x", transbase);
222 asm(
"movc %0, p0.c1, #0\n" :
"=r" (
ctrl));
249 memset(thread->used_cp, 0,
sizeof(thread->used_cp));
251 #ifdef CONFIG_UNICORE_FPU_F64
270 memset(&thread->cpu_context, 0,
sizeof(
struct cpu_context_save));
271 thread->cpu_context.sp = (
unsigned long)childregs;
273 thread->cpu_context.pc = (
unsigned long)ret_from_kernel_thread;
275 thread->cpu_context.r5 = stk_sz;
278 thread->cpu_context.pc = (
unsigned long)ret_from_fork;
280 childregs->UCreg_00 = 0;
284 childregs->UCreg_16 = regs->UCreg_03;
304 int used_math = thread->used_cp[1] | thread->used_cp[2];
306 #ifdef CONFIG_UNICORE_FPU_F64
308 memcpy(fp, &thread->fpstate,
sizeof(*fp));
310 return used_math != 0;
321 frame.
fp = thread_saved_fp(p);
322 frame.
sp = thread_saved_sp(p);
331 }
while ((count++) < 16);
337 unsigned long range_end = mm->
brk + 0x02000000;
352 VM_MAYREAD | VM_MAYEXEC |
353 VM_DONTEXPAND | VM_DONTDUMP,
359 return (vma->
vm_start == 0xffff0000) ?
"[vectors]" :
NULL;