arch/mips/dec/prom/identify.c
Source file repositories/reference/linux-study-clean/arch/mips/dec/prom/identify.c
File Facts
- System
- Linux kernel
- Corpus path
arch/mips/dec/prom/identify.c- Extension
.c- Size
- 4726 bytes
- Lines
- 188
- Domain
- Architecture Layer
- Bucket
- arch/mips
- 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.
Dependency Surface
linux/init.hlinux/kernel.hlinux/mc146818rtc.hlinux/export.hlinux/string.hlinux/types.hasm/bootinfo.hasm/dec/ioasic.hasm/dec/ioasic_addrs.hasm/dec/kn01.hasm/dec/kn02.hasm/dec/kn02ba.hasm/dec/kn02ca.hasm/dec/kn03.hasm/dec/kn230.hasm/dec/prom.hasm/dec/system.hdectypes.h
Detected Declarations
function prom_init_kn01function prom_init_kn230function prom_init_kn02function prom_init_kn02xafunction prom_init_kn03function prom_identify_archexport dec_rtc_base
Annotated Snippet
if (dec_sysid == 0) {
printk("Zero sysid returned from PROM! "
"Assuming a PMAX-like machine.\n");
dec_sysid = 1;
}
}
dec_cpunum = (dec_sysid & 0xff000000) >> 24;
dec_systype = (dec_sysid & 0xff0000) >> 16;
dec_firmrev = (dec_sysid & 0xff00) >> 8;
dec_etc = dec_sysid & 0xff;
/*
* FIXME: This may not be an exhaustive list of DECStations/Servers!
* Put all model-specific initialisation calls here.
*/
switch (dec_systype) {
case DS2100_3100:
mips_machtype = MACH_DS23100;
prom_init_kn01();
break;
case DS5100: /* DS5100 MIPSMATE */
mips_machtype = MACH_DS5100;
prom_init_kn230();
break;
case DS5000_200: /* DS5000 3max */
mips_machtype = MACH_DS5000_200;
prom_init_kn02();
break;
case DS5000_1XX: /* DS5000/100 3min */
mips_machtype = MACH_DS5000_1XX;
prom_init_kn02xa();
break;
case DS5000_2X0: /* DS5000/240 3max+ or DS5900 bigmax */
mips_machtype = MACH_DS5000_2X0;
prom_init_kn03();
if (!(ioasic_read(IO_REG_SIR) & KN03_IO_INR_3MAXP))
mips_machtype = MACH_DS5900;
break;
case DS5000_XX: /* Personal DS5000/xx maxine */
mips_machtype = MACH_DS5000_XX;
prom_init_kn02xa();
break;
case DS5800: /* DS5800 Isis */
mips_machtype = MACH_DS5800;
break;
case DS5400: /* DS5400 MIPSfair */
mips_machtype = MACH_DS5400;
break;
case DS5500: /* DS5500 MIPSfair-2 */
mips_machtype = MACH_DS5500;
break;
default:
mips_machtype = MACH_DSUNKNOWN;
break;
}
if (mips_machtype == MACH_DSUNKNOWN)
printk("This is an %s, id is %x\n",
dec_system_strings[mips_machtype], dec_systype);
else
printk("This is a %s\n", dec_system_strings[mips_machtype]);
}
Annotation
- Immediate include surface: `linux/init.h`, `linux/kernel.h`, `linux/mc146818rtc.h`, `linux/export.h`, `linux/string.h`, `linux/types.h`, `asm/bootinfo.h`, `asm/dec/ioasic.h`.
- Detected declarations: `function prom_init_kn01`, `function prom_init_kn230`, `function prom_init_kn02`, `function prom_init_kn02xa`, `function prom_init_kn03`, `function prom_identify_arch`, `export dec_rtc_base`.
- Atlas domain: Architecture Layer / arch/mips.
- 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.