diff --git a/arch/sparc32/tree.fs b/arch/sparc32/tree.fs index 7f872ba..0d4fb51 100644 --- a/arch/sparc32/tree.fs +++ b/arch/sparc32/tree.fs @@ -2,11 +2,17 @@ " /" find-device 2 encode-int " #address-cells" property 1 encode-int " #size-cells" property + " SUNW,SPARCstation-5" encode-string " name" property " SPARCstation 5" encode-string " banner-name" property " sun4m" encode-string " compatible" property + " SUNW,501-3059" encode-string " model" property + h# 0a21fe80 encode-int " clock-frequency" property + " /obio/zs@0,100000:a" encode-string " stdin-path" property " /obio/zs@0,100000:a" encode-string " stdout-path" property + + : encode-unit encode-unit-sbus ; : decode-unit decode-unit-sbus ; @@ -32,6 +38,9 @@ new-device " iommu" device-name 2 encode-int " #address-cells" property 1 encode-int " #size-cells" property + h# 1000 encode-int " page-size" property + 0 encode-int " cache-coherence?" property + h# ffee8000 encode-int " address" property h# 0 encode-int h# 10000000 encode-int encode+ h# 00000300 encode-int encode+ " reg" property external : open ( cr ." opening iommu" cr) true ; @@ -46,6 +55,10 @@ new-device " hierarchical" device-type 2 encode-int " #address-cells" property 1 encode-int " #size-cells" property + h# 01443fd0 encode-int " clock-frequency" property + h# 1c encode-int " slot-address-bits" property + h# 3f encode-int " burst-sizes" property + h# ffee7000 encode-int " address" property h# 0 encode-int h# 0 encode-int encode+ h# 0 encode-int encode+ h# 30000000 encode-int encode+ h# 10000000 encode-int encode+ h# 1 encode-int encode+ h# 0 encode-int encode+ h# 0 encode-int encode+ h# 40000000 encode-int encode+ h# 10000000 encode-int encode+ h# 2 encode-int encode+ h# 0 encode-int encode+ h# 0 encode-int encode+ h# 50000000 encode-int encode+ h# 10000000 encode-int encode+ diff --git a/drivers/obio.c b/drivers/obio.c index 72393f0..a118c11 100644 --- a/drivers/obio.c +++ b/drivers/obio.c @@ -154,6 +154,11 @@ ob_nvram_init(unsigned long base, unsigned long offset) nvram = (char *)ob_reg(base, offset, NVRAM_SIZE, 1); + PUSH((unsigned long)nvram); + fword("encode-int"); + push_str("address"); + fword("property"); + memcpy(&nv_info, nvram, sizeof(nv_info)); printk("Nvram id %s, version %d\n", nv_info.id_string, nv_info.version); @@ -251,6 +256,22 @@ ob_nvram_init(unsigned long base, unsigned long offset) push_str("icache-associativity"); fword("property"); + + PUSH(0x20); + fword("encode-int"); + push_str("ecache-line-size"); + fword("property"); + + PUSH(0x4000); + fword("encode-int"); + push_str("ecache-nlines"); + fword("property"); + + PUSH(1); + fword("encode-int"); + push_str("ecache-associativity"); + fword("property"); + PUSH(2); fword("encode-int"); push_str("ncaches"); @@ -276,6 +297,8 @@ ob_nvram_init(unsigned long base, unsigned long offset) push_str("mid"); fword("property"); + + fword("finish-device"); } }