Author: mcayland Date: Fri Feb 7 19:12:34 2014 New Revision: 1259 URL: http://tracker.coreboot.org/trac/openbios/changeset/1259
Log: SPARC32: SparcStation 10/20 mode fix
* SS10/20 use 36bits addresses. When mapping peripherals, bits [35:32] are not always tied to 0.
* The probe-set-sbus forth word expects hex numbers for slots. SS5 uses slots 0 to 5, whereas SS10/20 uses the slot 0xF, and triggers the bug.
Signed-off-by: Olivier Danet odanet@caramail.com Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk
Modified: trunk/openbios-devel/drivers/iommu.c trunk/openbios-devel/drivers/sbus.c
Modified: trunk/openbios-devel/drivers/iommu.c ============================================================================== --- trunk/openbios-devel/drivers/iommu.c Fri Feb 7 19:12:30 2014 (r1258) +++ trunk/openbios-devel/drivers/iommu.c Fri Feb 7 19:12:34 2014 (r1259) @@ -158,8 +158,8 @@ ucell size, virt;
size = POP(); - POP(); phys = POP(); + phys = (phys << 32) + POP();
virt = ofmem_map_io(phys, size);
Modified: trunk/openbios-devel/drivers/sbus.c ============================================================================== --- trunk/openbios-devel/drivers/sbus.c Fri Feb 7 19:12:30 2014 (r1258) +++ trunk/openbios-devel/drivers/sbus.c Fri Feb 7 19:12:34 2014 (r1259) @@ -153,7 +153,7 @@ fword("new-device"); PUSH(0); PUSH(0); - snprintf(buf, 6, "%d,0", slot); + snprintf(buf, 6, "%x,0", slot); push_str(buf); fword("set-args"); feval("['] tcx-driver-fcode 2 cells + 1 byte-load"); @@ -268,7 +268,7 @@
PUSH(0); PUSH(0); - snprintf(buf, 6, "%d,%ld", slot, offset); + snprintf(buf, 6, "%x,%lx", slot, offset); push_str(buf); fword("2dup"); fword("probe-self-sbus");