[U-Boot] Access to certain MPC8308 internal registers causes exception

I'm doing board bring up on a design using an MPC8308 and I'm seeing odd behavior when I try to read certain internal registers on the processor. In particular when I try to read the reserved registers in the DMA engine (for example offset 0xyyy2c008, right after the DMAES register) causes a machine check exception if I use u-boot and a "# SAP : read access failed" when using the BDI. Yes I know that it's a reserved register and all bets are off when it comes to those, so I'm not looking to find something "broken". What I'm curious about is why I've never seen this in the other processors I've used from Freescale (even other 83xx processors), and two why other "reserved" registers don't behave the same way. I can read all the way from 0xyyyy0d00 to 0xyyyy2000 just fine. So what's different about the DMA engine?
Don't think it's a BAT or a memory window issue since I can read on both sides of the register. Very curious.
Thanks for any insight.
Bruce

Dear Bruce_Leonard@selinc.com,
In message OF52246316.B0B28736-ON8825788C.0070C8B2-8825788C.0071C6C6@selinc.com you wrote:
I'm doing board bring up on a design using an MPC8308 and I'm seeing odd behavior when I try to read certain internal registers on the processor. In particular when I try to read the reserved registers in the DMA engine
Well, "reserved" means there is _no_ register there, and trying to access it invoked undefined behaviour.
(for example offset 0xyyy2c008, right after the DMAES register) causes a machine check exception if I use u-boot and a "# SAP : read access failed" when using the BDI. Yes I know that it's a reserved register and all bets are off when it comes to those, so I'm not looking to find something "broken". What I'm curious about is why I've never seen this in the other
No, this is not broken, this is perfectly normal behaviour.
processors I've used from Freescale (even other 83xx processors), and two
You just didn't look carefully enough. This is common behaviour on many PPC processors. Even on the old MPC8xx systems we used this behaviour for example to implement a "reset" operation.
why other "reserved" registers don't behave the same way. I can read all the way from 0xyyyy0d00 to 0xyyyy2000 just fine. So what's different about the DMA engine?
Undefined behaviour means that anything can happed - machine check, or nothing at all, or the release of magic smoke. There are absolutely no guarantees.
Don't think it's a BAT or a memory window issue since I can read on both sides of the register. Very curious.
No, pretty much normal.
Best regards,
Wolfgang Denk

On Tue, 10 May 2011 13:42:44 -0700 Bruce_Leonard@selinc.com wrote:
"broken". What I'm curious about is why I've never seen this in the other processors I've used from Freescale (even other 83xx processors), and two why other "reserved" registers don't behave the same way. I can read all the way from 0xyyyy0d00 to 0xyyyy2000 just fine. So what's different about the DMA engine?
the DMA engine on the 8308 is not the same as the one on the rest of the mpc83xx and mpc85xx processors - rather, it's similar to that on the mpc5121.
Kim
participants (3)
-
Bruce_Leonard@selinc.com
-
Kim Phillips
-
Wolfgang Denk