On Mon, 7 Apr 2003, Erik J. Green wrote: > According to my current understanding, the base of each of 8 segments in xkphys > maps to the start of physical memory, so offset 0 in kseg0 should be the same > data as at offset 0 of the a800...0000 segment in xkphys. So, if I load code > starting at offset 0 in xkphys, I should be able to jump to the 32-bit part of > the xkphys address and end up at the same offset in kseg0, provided the target > address is sign-extended properly. As long as your offset into XPHYS fits within the KSEG0 size. > the code in xkphys and kseg0 have the same offsets. Objcopy seems to have some > non-obvious rules for doing address calculations, IE objcopy using > --change-addresses=X > > 0xa800000000000000 + 0x20004000 > > gives something close to (not near my MIPS system atm) > > 0xa7ffffff2001c000 Hmm, the option seems to work for me as expected. What version of objcopy? What do you use for "X"? What does `readelf -l' report before and after copying? > So, I'm thinking constructing the address in a register might be easier for now. But your kernel really needs to be linked at a KSEG0 address -- if you are to construct the address manually, the resulting kernel won't work. Maciej -- + Maciej W. Rozycki, Technical University of Gdansk, Poland + +--------------------------------------------------------------+ + e-mail: macro@ds2.pg.gda.pl, PGP key available +