Tarl Neustaedter wrote:
So we're doing the first cif-seek, which is the client-interface seek. See section 6.3.2.3 in IEEE 1275. That causes the disk to be read so you can cache disk accesses. The question is whether the arguments we are sending are reasonable. What we saw:
00000000ffe318e0: dev-ih ( 8008000 800 8000 ffe4d358 ) 00000000ffe318e8: read-disk
Those arguments we see on the stack are adr, len, off, ihandle. ffe4d358 is a reasonable address for an ihandle. 0x8000 is a reasonable byte offset into the disk to read - and that's all that seek takes (the adr, len get used later by the cif-read, which we don't reach). So somehow, trying to byte offset 0x8000 on the disk is failing - don't know why.
Here's what I get on my Milax CD image here:
: read-disk ( 8002000 800 8000 ffe4adc8 ) 00000000ffe31340: dup ( 8002000 800 8000 ffe4adc8 ffe4adc8 ) 00000000ffe31348: >r ( 8002000 800 8000 ffe4adc8 ) 00000000ffe31350: 0 ( 8002000 800 8000 ffe4adc8 0 ) 00000000ffe31358: swap ( 8002000 800 8000 0 ffe4adc8 ) 00000000ffe31360: cif-seek : seek ( 8002000 800 8000 0 ffe4adc8 ) 00000000ffe280d0: swap ( 8002000 800 8000 ffe4adc8 0 ) 00000000ffe280d8: rot ( 8002000 800 ffe4adc8 0 8000 ) 00000000ffe280e0: dup ( 8002000 800 ffe4adc8 0 8000 8000 ) 00000000ffe280e8: ihandle>phandle ( 8002000 800 ffe4adc8 0 8000 0 ) 00000000ffe280f0: (") ( 8002000 800 ffe4adc8 0 8000 0 ffe28100 4 ) 00000000ffe28108: rot ( 8002000 800 ffe4adc8 0 8000 ffe28100 4 0 ) 00000000ffe28110: find-method ( 8002000 800 ffe4adc8 0 8000 0 ) 00000000ffe28118: do?branch ( 8002000 800 ffe4adc8 0 8000 ) 00000000ffe28148: 3drop ( 8002000 800 ) 00000000ffe28150: -1 ( 8002000 800 ffffffffffffffff ) 00000000ffe28158: (semis) [ Finished seek ] ( 8002000 800 ffffffffffffffff ) 00000000ffe31368: do?branch ( 8002000 800 ) 00000000ffe31378: (") ( 8002000 800 ffe31388 b ) 00000000ffe31398: die seek failed
Can't mount root Aborted.
Hmmm it looks to me as if the client interface seek word is expecting the arguments in a different order - I would expect ihandle>phandle to be executed on ffe4adc8, not on 0.
HTH,
Mark.