Andreas Färber wrote:
I was planning to do the same thing for ppc64, please go ahead.
The alternative would've been to create separate range structs - cleaner API-wise, but then the range logic would need to be duplicated, which I consider a big con. ;)
Yeah, that's what I was thinking. I know that the old SPARC64 code used to reference addresses in the translation_t struct linked list directly in the MMU miss handlers, but that section has now been replaced with C code. Are there any similar gotchas on PPC?
I'm also thinking it would be nice to have a couple of functions for each arch such as POP_PHYS() and PUSH_PHYS() which will PUSH/POP stack items into phys_addr_t and vice-versa. I think this will also allow a nice tidy up of the areas where these conversions take place, e.g. the MMU handlers.
Looks like I'm busy for the rest of the day, so will try and have a stab at this tomorrow.
ATB,
Mark.