Ich glaube, du musst erst einmal dein Problem klarer definieren. Was genau verstehst du unter einem Kontext?
tyndur hat eine struct, um einen Kontext zu beschreiben, die (u.a.?) physische und virtuelle Adresse des PDs des Kontexts enthält. Sowohl diese struct als auch alle PDs sind ganz normaler Kernelspeicher und damit immer gemappt, und zwar in allen Kontexten gleich.
Bleibt der Zugriff auf PTs. Bei inaktiven Kontexten kannst du einfach die PT temporär mappen wie jeden anderen Speicher auch. Beim aktiven Kontext geht das nicht, oder ist jedenfalls ziemlich tricky, weil du da in Rekursionen rennst.
Hier kommt dann der Trick mit rekursivem Mapping ins Spiel, d.h. ein Eintrag im PD zeigt wieder auf das PD selbst, so dass es gleichzeitig auch als PT benutzt wird. Nimm dir mal Papier und Bleistift und überleg dir mal, was an dieser Stelle gemappt wird. Wenn du das verstanden hast, weißt du vermutlich, was du tun musst.