What lives at E0000000?

ExCyber

Staff member
Is there a secret chunk of RAM or ROM or something at E0000000-E0000FFF? The range seems to be completely undocumented in the SH7604 manual, and I've seen some code that appears to reference this area. When I say "completely undocumented", I mean that it's not mentioned at all in the memory map, not even as a reserved area - the map skips right from DFFFFFFFF to E0001000.

<cue Twilight Zone theme>

:ph34r:
 
According to Charles MacDonald (based on his observation), this area is mapped to garbage data (0x00000001000200030004000500060007)

Check his "Saturn Hardware notes" for more info ;)

Charles' website
 
Thanks, I had forgotten that he put that doc together. If that's really all that's there, I'm misreading the code, but I haven't figured out how... a braf E0000000 should add E0000000 to PC, shouldn't it?
 
Originally posted by ExCyber@May 27, 2004 @ 09:28 PM

Thanks, I had forgotten that he put that doc together. If that's really all that's there, I'm misreading the code, but I haven't figured out how... a braf E0000000 should add E0000000 to PC, shouldn't it?

Yes this opcode works that way.

But if you look a little closer (it's only guess now), you can have a direct access to the bios (ie PC=0x20004560 for exemple), that makes the BRAF still ending in the bios (0x20004560 + 0xE0000000 = 0x4560)

Maybe it's just a weird call in the bios to use the cache :)

I recall having this kind of branch when I started debugging the bios in Saturnin...

And as this memory area (0xEXXXXXXX) isn't mapped, I suppose it's not used right now
 
Yes, I am looking at the BIOS, and it may be that kind of setup, though I'm not sure how the control flow gets to RAM. The actual BRAF is located at 2xx or so, so it seems it would have to be from L work RAM in order to operate. I guess I'll have to take a closer look at a couple subroutines that I wanted to ignore. :rolleyes:
 
I agree with Runik, it looks like it's just a way of going from the cache-through area to the cache area. The BIOS starts with setting up the cache, then the slave forks off to its own codepath and the master does the braf (the slave does the same on its codepath, but for some reason using r6 instead of r7 - both hold the same value at that point).
 
Back
Top