arch/m68k/kernel/relocate_kernel.S
Source file repositories/reference/linux-study-clean/arch/m68k/kernel/relocate_kernel.S
File Facts
- System
- Linux kernel
- Corpus path
arch/m68k/kernel/relocate_kernel.S- Extension
.S- Size
- 2873 bytes
- Lines
- 161
- Domain
- Architecture Layer
- Bucket
- arch/m68k
- Inferred role
- Architecture Layer: arch/m68k
- Status
- atlas-only
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.
Dependency Surface
linux/linkage.hasm/asm-offsets.hasm/page.hasm/setup.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
#include <asm/page.h>
#include <asm/setup.h>
#define MMU_BASE 8 /* MMU flags base in cpu_mmu_flags */
.text
ENTRY(relocate_new_kernel)
movel %sp@(4),%a0 /* a0 = ptr */
movel %sp@(8),%a1 /* a1 = start */
movel %sp@(12),%d1 /* d1 = cpu_mmu_flags */
movew #PAGE_MASK,%d2 /* d2 = PAGE_MASK */
/* Disable MMU */
btst #MMU_BASE + MMUB_68851,%d1
jeq 3f
1: /* 68851 or 68030 */
lea %pc@(.Lcopy),%a4
2: addl #0x00000000,%a4 /* virt_to_phys() */
.section .m68k_fixup,"aw"
.long M68K_FIXUP_MEMOFFSET, 2b+2
.previous
.chip 68030
pmove %tc,%d0 /* Disable MMU */
bclr #7,%d0
pmove %d0,%tc
jmp %a4@ /* Jump to physical .Lcopy */
.chip 68k
3:
btst #MMU_BASE + MMUB_68030,%d1
jne 1b
btst #MMU_BASE + MMUB_68040,%d1
jeq 6f
4: /* 68040 or 68060 */
lea %pc@(.Lcont040),%a4
5: addl #0x00000000,%a4 /* virt_to_phys() */
.section .m68k_fixup,"aw"
.long M68K_FIXUP_MEMOFFSET, 5b+2
.previous
movel %a4,%d0
andl #0xff000000,%d0
orw #0xe020,%d0 /* Map 16 MiB, enable, cacheable */
.chip 68040
movec %d0,%itt0
movec %d0,%dtt0
.chip 68k
jmp %a4@ /* Jump to physical .Lcont040 */
.Lcont040:
moveq #0,%d0
.chip 68040
movec %d0,%tc /* Disable MMU */
movec %d0,%itt0
movec %d0,%itt1
movec %d0,%dtt0
Annotation
- Immediate include surface: `linux/linkage.h`, `asm/asm-offsets.h`, `asm/page.h`, `asm/setup.h`.
- Atlas domain: Architecture Layer / arch/m68k.
- Implementation status: atlas-only.
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.