arch/sh/kernel/process_32.c
Source file repositories/reference/linux-study-clean/arch/sh/kernel/process_32.c
File Facts
- System
- Linux kernel
- Corpus path
arch/sh/kernel/process_32.c- Extension
.c- Size
- 5085 bytes
- Lines
- 198
- Domain
- Architecture Layer
- Bucket
- arch/sh
- Inferred role
- Architecture Layer: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/module.hlinux/mm.hlinux/sched/debug.hlinux/sched/task.hlinux/sched/task_stack.hlinux/slab.hlinux/elfcore.hlinux/fs.hlinux/ftrace.hlinux/hw_breakpoint.hlinux/prefetch.hlinux/stackprotector.hlinux/uaccess.hasm/mmu_context.hasm/fpu.hasm/syscalls.hasm/switch_to.h
Detected Declarations
function Copyrightfunction start_threadfunction flush_threadfunction copy_threadfunction switch_tofunction __get_wchanexport start_thread
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/kernel/process.c
*
* This file handles the architecture-dependent parts of process handling..
*
* Copyright (C) 1995 Linus Torvalds
*
* SuperH version: Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima
* Copyright (C) 2006 Lineo Solutions Inc. support SH4A UBC
* Copyright (C) 2002 - 2008 Paul Mundt
*/
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/sched/debug.h>
#include <linux/sched/task.h>
#include <linux/sched/task_stack.h>
#include <linux/slab.h>
#include <linux/elfcore.h>
#include <linux/fs.h>
#include <linux/ftrace.h>
#include <linux/hw_breakpoint.h>
#include <linux/prefetch.h>
#include <linux/stackprotector.h>
#include <linux/uaccess.h>
#include <asm/mmu_context.h>
#include <asm/fpu.h>
#include <asm/syscalls.h>
#include <asm/switch_to.h>
void show_regs(struct pt_regs * regs)
{
pr_info("\n");
show_regs_print_info(KERN_DEFAULT);
pr_info("PC is at %pS\n", (void *)instruction_pointer(regs));
pr_info("PR is at %pS\n", (void *)regs->pr);
pr_info("PC : %08lx SP : %08lx SR : %08lx ", regs->pc,
regs->regs[15], regs->sr);
#ifdef CONFIG_MMU
pr_cont("TEA : %08x\n", __raw_readl(MMU_TEA));
#else
pr_cont("\n");
#endif
pr_info("R0 : %08lx R1 : %08lx R2 : %08lx R3 : %08lx\n",
regs->regs[0], regs->regs[1], regs->regs[2], regs->regs[3]);
pr_info("R4 : %08lx R5 : %08lx R6 : %08lx R7 : %08lx\n",
regs->regs[4], regs->regs[5], regs->regs[6], regs->regs[7]);
pr_info("R8 : %08lx R9 : %08lx R10 : %08lx R11 : %08lx\n",
regs->regs[8], regs->regs[9], regs->regs[10], regs->regs[11]);
pr_info("R12 : %08lx R13 : %08lx R14 : %08lx\n",
regs->regs[12], regs->regs[13], regs->regs[14]);
pr_info("MACH: %08lx MACL: %08lx GBR : %08lx PR : %08lx\n",
regs->mach, regs->macl, regs->gbr, regs->pr);
show_trace(NULL, (unsigned long *)regs->regs[15], regs, KERN_DEFAULT);
show_code(regs);
}
void start_thread(struct pt_regs *regs, unsigned long new_pc,
unsigned long new_sp)
{
regs->pr = 0;
regs->sr = SR_FD;
regs->pc = new_pc;
regs->regs[15] = new_sp;
free_thread_xstate(current);
}
EXPORT_SYMBOL(start_thread);
void flush_thread(void)
{
struct task_struct *tsk = current;
flush_ptrace_hw_breakpoint(tsk);
#if defined(CONFIG_SH_FPU)
/* Forget lazy FPU state */
clear_fpu(tsk, task_pt_regs(tsk));
clear_used_math();
#endif
}
asmlinkage void ret_from_fork(void);
asmlinkage void ret_from_kernel_thread(void);
int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
Annotation
- Immediate include surface: `linux/module.h`, `linux/mm.h`, `linux/sched/debug.h`, `linux/sched/task.h`, `linux/sched/task_stack.h`, `linux/slab.h`, `linux/elfcore.h`, `linux/fs.h`.
- Detected declarations: `function Copyright`, `function start_thread`, `function flush_thread`, `function copy_thread`, `function switch_to`, `function __get_wchan`, `export start_thread`.
- Atlas domain: Architecture Layer / arch/sh.
- Implementation status: integration implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.