[U-Boot-Users] Turning on instruction address translation on an 8349 causes processor reset

I'm working on adding support for a new 8349 board to U-Boot, and the processor resets if I turn on the IR bit in the MSR. This happens in function enable_addr_trans() in start.S.
enable_addr_trans: /* enable address translation */ mfmsr r5 ori r5, r5, (MSR_IR | MSR_DR) mtmsr r5 isync blr
with this code, when the "mtmsr" instruction is executed, the processor resets (or hangs - I can't tell). If I change the 4th line to:
ori r5, r5, MSR_DR
It works and U-Boot boots to a command prompt.
Since the BATs are configured the same for data and instruction, I presume the mapping is correct, but there's something wrong with turning on instruction address translation. Anyone have any ideas?

[snip]
I'm working on adding support for a new 8349 board to U-Boot, and the processor resets if I turn on the IR bit in the MSR. This happens in function enable_addr_trans() in start.S.
enable_addr_trans: /* enable address translation */ mfmsr r5 ori r5, r5, (MSR_IR | MSR_DR) mtmsr r5 isync blr
with this code, when the "mtmsr" instruction is executed, the processor resets (or hangs - I can't tell). If I change the 4th line to:
ori r5, r5, MSR_DR
It works and U-Boot boots to a command prompt.
Since the BATs are configured the same for data and instruction, I presume the mapping is correct, but there's something wrong with turning on instruction address translation. Anyone have any ideas?
The MPC8349EMDS code in wolfgang's git is working well now. No hang. Please check your code carefully.
-Dave

Liu Dave-r63238 wrote:
The MPC8349EMDS code in wolfgang's git is working well now. No hang. Please check your code carefully.
I've tried and I can't figure out what's wrong. Right now, I have this code in mpc83xx/start.S:
/* For some reason, address translation does not work on the 8349E-mITX */ #ifndef CONFIG_MPC8349ITX /* enable address translation */ bl enable_addr_trans sync #endif
Everything else works fine (I'll be providing a patch for the 8349E-mITX in a week or so). But if I turn on either address translation (instruction or data, it doesn't matter), then the system crashes.
enable_addr_trans: /* enable address translation */ mfmsr r5 ori r5, r5, (MSR_IR | MSR_DR) mtmsr r5 isync blr
The crash occurs right after the 'mtmsr' instruction.
The only thing I can think of is that I'm using the wrong values for CFG_IBATxx, but I have no idea what they should be. I copied them from MPC8349EMDS.h.
participants (2)
-
Liu Dave-r63238
-
Timur Tabi