Hi,
2) XHRead(16.0, recno=0, count=0, buf=$8) is called - it tries to read 0 sectors so the answer is OK - probably just a quick test from the linux kernel if the device is inserted and readable.
ISTR the partition table code does check for presence of a device by reading in the first block, but that should still have count=1.
3) ARAnyM XHRead(16.0, recno=0, count=65280, buf=$8) is called - it tries to read 65280 sectors to address $8, so it's going to overwrite bottom 32 MB of memory with data from the disk drive. Then it crashes with the double bus fault - I don't know where the PC is but maybe the currect program code gets overwritten by the disk data - that would explain the crash easily.
Damn sure the 64k sectors will overwrite the start of the kernel memory if the kernel is loaded into ST-RAM.
Question is how did the buffer addres of 0x8 get set up? The parameters make no sense whatsoever. Thanks for spotting this!
I can debug this further from the outside but I was wondering if it is normal to read 65280 sectors blindly and store it to 0x00000008 address. Why such an amount of data? And is the address 0x0008 OK as a disk
Nope, page zero is even explicitly unmapped in order to catch null pointers from user space :-)
buffer? I almost feel like the parameters are not passed in correctly (65280 is 0xff00).
Compiler or binutils regression? Michael