Den 2025-01-11 kl. 18:01, skrev Martin Husemann:
Please go ahead! I'll try to help as much as I can - most of the vax code was written long before the advent of uvm (and lwp), so some parts are most likely wrong. Also; section 9 of the manual did not even exist back then; very much of theOn Sat, Jan 11, 2025 at 05:20:42PM +0100, Anders Magnusson wrote:Anyway; adding the settings of the page registers to cpu_lwp_fork() is non-trivial (if the goal is just to remove the pmap_activate() call).No, that part should not happen there, only the initialiization of the PCB list. The registers will be set by another pmap_activate() call later in the sequence before that lwp first time makes it to userland. But again I am not claiming to fully understand what is going on and I am seriously confused by some parts of the code - I will add instrumentation and try to debug it further, now that you explained why this is needed here.
implementation is "trial-and-error" :-) -- R
Side note: what I don't undstand is why VAX needs a list of PCBs in its struct pmap. Doesn't this always map 1:1 to the list pcbs of all lwp's in the process? This list handling seems to be different to all other pmaps I have seen.Do you mean the list in PCB; pcb_pmnext? IIRC it had to do with the logic for handling the page table resource map (since all lwp:s in a process share the same page table but have different PCBs).Ok, I will read more code and ask questions... Martin