At the moment we are probably closest to an Ultra250 with an UltraSPARC-IIi processor and PCI bus. This property is checked by NetBSD during boot.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk --- openbios-devel/arch/sparc64/openbios.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/openbios-devel/arch/sparc64/openbios.c b/openbios-devel/arch/sparc64/openbios.c index 9cc1ac2..9ca0851 100644 --- a/openbios-devel/arch/sparc64/openbios.c +++ b/openbios-devel/arch/sparc64/openbios.c @@ -47,6 +47,7 @@ static uint8_t idprom[NVRAM_IDPROM_SIZE];
struct hwdef { pci_arch_t pci; + const char *model; uint16_t machine_id_low, machine_id_high; };
@@ -67,11 +68,14 @@ static const struct hwdef hwdefs[] = { .io_len = 0x10000, .irqs = { 0, 1, 2, 3 }, }, + .model = "SUNW,501-4681", .machine_id_low = 0, .machine_id_high = 255, }, };
+static const struct hwdef *hwdef = NULL; + struct cpudef { unsigned long iu_version; const char *name; @@ -570,6 +574,8 @@ extern volatile uint64_t *obp_ticks_pointer; static void arch_init( void ) { + phandle_t ph; + openbios_init(); modules_init(); #ifdef CONFIG_DRIVER_PCI @@ -578,6 +584,15 @@ arch_init( void ) nvconf_init(); device_end();
+ /* Set the model name */ + ph = find_dev("/"); + PUSH(pointer2cell(hwdef->model)); + PUSH(strlen(hwdef->model)); + fword("encode-string"); + push_str("model"); + PUSH_ph(ph); + fword("set-property"); + /* Point to the Forth obp-ticks variable */ fword("obp-ticks"); obp_ticks_pointer = cell2pointer(POP()); @@ -594,8 +609,6 @@ int openbios(void) { unsigned int i; uint16_t machine_id; - const struct hwdef *hwdef = NULL; -
for (i = 0; i < sizeof(hwdefs) / sizeof(struct hwdef); i++) { isa_io_base = hwdefs[i].pci.io_base;