Lines Matching +full:halt +full:- +full:regs

1 // SPDX-License-Identifier: GPL-2.0
9 * This file handles the architecture-dependent parts of process handling.
87 ((unsigned long)hwrpb + hwrpb->processor_offset in common_shutdown_1()
88 + hwrpb->processor_size * cpuid); in common_shutdown_1()
89 pflags = &cpup->flags; in common_shutdown_1()
96 /* Secondaries halt here. */ in common_shutdown_1()
102 halt(); in common_shutdown_1()
106 if (how->mode == LINUX_REBOOT_CMD_RESTART) { in common_shutdown_1()
107 if (!how->restart_cmd) { in common_shutdown_1()
126 /* Wait for the secondaries to halt. */ in common_shutdown_1()
136 /* If we've gotten here after SysRq-b, leave interrupt in common_shutdown_1()
142 do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES-1, 1); in common_shutdown_1()
150 alpha_mv.kill_arch(how->mode); in common_shutdown_1()
152 if (! alpha_using_srm && how->mode != LINUX_REBOOT_CMD_RESTART) { in common_shutdown_1()
154 the hwrpb bits above, we can't reliably halt the in common_shutdown_1()
162 halt(); in common_shutdown_1()
195 /* Used by sysrq-p, among others. I don't believe r9-r15 are ever
199 show_regs(struct pt_regs *regs) in show_regs() argument
202 dik_show_regs(regs, NULL); in show_regs()
206 * Re-start a thread when doing execve()
209 start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp) in start_thread() argument
211 regs->pc = pc; in start_thread()
212 regs->ps = 8; in start_thread()
222 current_thread_info()->ieee_state = 0; in flush_thread()
226 current_thread_info()->pcb.unique = 0; in flush_thread()
230 * Copy architecture-specific thread state
234 unsigned long clone_flags = args->flags; in copy_thread()
235 unsigned long usp = args->stack; in copy_thread()
236 unsigned long tls = args->tls; in copy_thread()
242 struct pt_regs *regs = current_pt_regs(); in copy_thread() local
245 childstack = ((struct switch_stack *) childregs) - 1; in copy_thread()
246 childti->pcb.ksp = (unsigned long) childstack; in copy_thread()
247 childti->pcb.flags = 1; /* set FEN, clear everything else */ in copy_thread()
248 childti->status |= TS_SAVED_FP | TS_RESTORE_FP; in copy_thread()
250 if (unlikely(args->fn)) { in copy_thread()
254 childstack->r26 = (unsigned long) ret_from_kernel_thread; in copy_thread()
255 childstack->r9 = (unsigned long) args->fn; in copy_thread()
256 childstack->r10 = (unsigned long) args->fn_arg; in copy_thread()
257 childregs->hae = alpha_mv.hae_cache; in copy_thread()
258 memset(childti->fp, '\0', sizeof(childti->fp)); in copy_thread()
259 childti->pcb.usp = 0; in copy_thread()
264 copy in dup_task_struct. This is non-intuitive, but is in copy_thread()
268 childti->pcb.unique = tls; in copy_thread()
270 regs->r20 = 0; /* OSF/1 has some strange fork() semantics. */ in copy_thread()
271 childti->pcb.usp = usp ?: rdusp(); in copy_thread()
272 *childregs = *regs; in copy_thread()
273 childregs->r0 = 0; in copy_thread()
274 childregs->r19 = 0; in copy_thread()
275 childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */ in copy_thread()
276 stack = ((struct switch_stack *) regs) - 1; in copy_thread()
278 childstack->r26 = (unsigned long) ret_from_fork; in copy_thread()
289 struct switch_stack * sw = ((struct switch_stack *) pt) - 1; in dump_elf_thread()
291 dest[ 0] = pt->r0; in dump_elf_thread()
292 dest[ 1] = pt->r1; in dump_elf_thread()
293 dest[ 2] = pt->r2; in dump_elf_thread()
294 dest[ 3] = pt->r3; in dump_elf_thread()
295 dest[ 4] = pt->r4; in dump_elf_thread()
296 dest[ 5] = pt->r5; in dump_elf_thread()
297 dest[ 6] = pt->r6; in dump_elf_thread()
298 dest[ 7] = pt->r7; in dump_elf_thread()
299 dest[ 8] = pt->r8; in dump_elf_thread()
300 dest[ 9] = sw->r9; in dump_elf_thread()
301 dest[10] = sw->r10; in dump_elf_thread()
302 dest[11] = sw->r11; in dump_elf_thread()
303 dest[12] = sw->r12; in dump_elf_thread()
304 dest[13] = sw->r13; in dump_elf_thread()
305 dest[14] = sw->r14; in dump_elf_thread()
306 dest[15] = sw->r15; in dump_elf_thread()
307 dest[16] = pt->r16; in dump_elf_thread()
308 dest[17] = pt->r17; in dump_elf_thread()
309 dest[18] = pt->r18; in dump_elf_thread()
310 dest[19] = pt->r19; in dump_elf_thread()
311 dest[20] = pt->r20; in dump_elf_thread()
312 dest[21] = pt->r21; in dump_elf_thread()
313 dest[22] = pt->r22; in dump_elf_thread()
314 dest[23] = pt->r23; in dump_elf_thread()
315 dest[24] = pt->r24; in dump_elf_thread()
316 dest[25] = pt->r25; in dump_elf_thread()
317 dest[26] = pt->r26; in dump_elf_thread()
318 dest[27] = pt->r27; in dump_elf_thread()
319 dest[28] = pt->r28; in dump_elf_thread()
320 dest[29] = pt->gp; in dump_elf_thread()
321 dest[30] = ti == current_thread_info() ? rdusp() : ti->pcb.usp; in dump_elf_thread()
322 dest[31] = pt->pc; in dump_elf_thread()
327 dest[32] = ti->pcb.unique; in dump_elf_thread()
341 memcpy(fpu, task_thread_info(t)->fp, 32 * 8); in elf_core_copy_task_fpregs()
356 * all. -- r~
363 unsigned long fp, sp = task_thread_info(t)->pcb.ksp; in thread_saved_pc()
392 schedule_frame = ((unsigned long *)task_thread_info(p)->pcb.ksp)[6]; in __get_wchan()