On 10/04/12 18:45, Igor Kovalenko wrote:
Well, it's more interesting than that. For SPARC, when you map the memory it is first added to the translation_t linked list. The TLB miss handlers simply iterate over this list in order to find the mapping before continuing. Therefore when creating a mapping, since the translation_t list already contains the entry created by ofmem_map_page_range(), all the ofmem_arch_map_pages() function has to do is update any existing TLB entries.
The "early" variant was intended to perform one-time injection of mapped pages that were acquired before c source code is entered so it was not safe to call common mapping routine yet. I was afraid to implement mapping code in assembly.
I think I see this now. Okay - I think it would be possible to either merge this into the existing OFMEM code or refactor it to make use of the existing functions.
It looks like I definitely need to produce a v2 of this patch, so I won't commit it so far and submit a revised version shortly.
Many thanks,
Mark.