Quoting "Erik J. Green" <firstname.lastname@example.org>:
> How can this work in the existing head.S for a mapped kernel? Wouldn't other
> machines have the same problem, where the location for kernelsp is within the
> non-writeable segment?
And a followup to my followup: =)
Later in the boot, in tlb-andes.c, the andes_tlb_init function re-sets CP0_wired
to 0 (and pagemask to 4k), then the local_flush_tlb_all function overwrites the
TLB entry for the kernel, causing an immediate halt to things.
Am I correct in thinking the 16M page size initally set up in head.S (with
CONFIG_MAPPED_KERNEL=1) was so the mapped kernel could get to the point of
setting up the TLB "for real" later on? If so, how is the switch to 4k pages
supposed to work? I can see the existing code working if local_tlb_flush_all is
running out of unmapped memory, but in my case I would think the "starter" TLB
entry would need to be preserved until a replacement is created.
Erik J. Green