can not cross a page boundary. This fixes a problem when a dump(8) buffer
just crossed a page boundary and bus_dmamap_load() would coalesce the
the overlap onto the first segment. The NEXTPTR value would get set to
-1 when starting the DMA transfer and the residual data for unaligned
transfers would be copied to physical address 0x1ffffffc. On the R3000,
this would result in corrupted data, and on the R4000 would usually result
in a hard system hang.
both the primary and the secondary caches. MachFlushDCache() will not
invalidate the correct secondary cache lines for KSEG2 addresses.
R4000 systems should now be able to boot and run.
addresses, it makes sense to print the actual address of the device rather
than the original address. The latter is useful to distinguish the type
of device only, so we maintain that data internally (as we always have).
This closes PR 10557 from Dave Huang.
you do not save it and pass it along in rval the system will start
to fail running user programs. This finishes the suggestion by cgd to
not save some registers on syscall entry.
we have to poke the data structures directly to force the offset we need.
The open() function returns with the address of the IO control block in
register t0 so we take a copy of it for our brute-force lseek function.
This should be reasonably portable since the firmware writers closely
follow UNIX semantics and the open stubs should recompile and use the
same registers. May break on the rebadged clones -- buyer beware.
The alternative is to use dummy reads to go forwards and reopen followed
by dummy reads to go backwards. It takes around 60 seconds to boot
using this method if we use a clean filesystem.
Tested with firmware versions 5.40 and 5.43
Check the first partition type in devopen(), and if it is of type
FS_RAID, add 64 to blkdev_part_offset.
NOTE: This brings the size of the alpha first-stage bootblocks up to
close to the maximum. RAID1 support is controlled by the
BOOTXX_RAID1_SUPPORT define, and is easy to disable if size
becomes an issue.
based on it working already for macppc.
Also add commented out:
#options VNODE_OP_NOINLINE # Don't inline vnode op calls
#options NFS_V2_ONLY # Exclude NFS3 and NQNFS code
as suggestions for additional savings