Author: blueswirl Date: 2008-07-12 11:41:08 +0200 (Sat, 12 Jul 2008) New Revision: 198
Modified: openbios-devel/arch/sparc64/openbios.c openbios-devel/arch/sparc64/tree.fs Log: Add a CPU node
Modified: openbios-devel/arch/sparc64/openbios.c =================================================================== --- openbios-devel/arch/sparc64/openbios.c 2008-07-11 23:21:43 UTC (rev 197) +++ openbios-devel/arch/sparc64/openbios.c 2008-07-12 09:41:08 UTC (rev 198) @@ -40,6 +40,47 @@ const char *name; };
+static void cpu_generic_init(const struct cpudef *cpu) +{ + unsigned long iu_version; + + push_str("/"); + fword("find-device"); + + fword("new-device"); + + push_str(cpu->name); + fword("device-name"); + + push_str("cpu"); + fword("device-type"); + + asm("rdpr %%ver, %0\n" + : "=r"(iu_version) :); + + PUSH((iu_version >> 48) & 0xff); + fword("encode-int"); + push_str("manufacturer#"); + fword("property"); + + PUSH((iu_version >> 32) & 0xff); + fword("encode-int"); + push_str("implementation#"); + fword("property"); + + PUSH((iu_version >> 24) & 0xff); + fword("encode-int"); + push_str("mask#"); + fword("property"); + + PUSH(9); + fword("encode-int"); + push_str("sparc-version"); + fword("property"); + + fword("finish-device"); +} + static const struct cpudef sparc_defs[] = { { .iu_version = (0x04ULL << 48) | (0x02ULL << 32), @@ -166,6 +207,8 @@
printk("CPUs: %x", nv_info.nb_cpus); cpu = id_cpu(); + //cpu->initfn(); + cpu_generic_init(cpu); printk(" x %s\n", cpu->name); }
Modified: openbios-devel/arch/sparc64/tree.fs =================================================================== --- openbios-devel/arch/sparc64/tree.fs 2008-07-11 23:21:43 UTC (rev 197) +++ openbios-devel/arch/sparc64/tree.fs 2008-07-12 09:41:08 UTC (rev 198) @@ -2,6 +2,7 @@ " /" find-device 2 encode-int " #address-cells" property 1 encode-int " #size-cells" property + " sun4u" encode-string " compatible" property
\ : encode-unit encode-unit-sbus ; \ : decode-unit decode-unit-sbus ;