From 6540dedaf835c2e947ddc8e5911d4f07197d98e8 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 16 Feb 1999 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1999-02-16 --- pc/mmu.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pc/mmu.c b/pc/mmu.c index 10faab73889bec0f552a19a600a9ac12bd5537b7..198ca9cb77ff956972a91e56e3b4c911d62d37c3 100644 --- a/pc/mmu.c +++ b/pc/mmu.c @@ -42,7 +42,7 @@ taskswitch(ulong pdb, ulong stack) void mmuinit(void) { - ulong x; + ulong x, *p; ushort ptr[3]; m->tss = malloc(sizeof(Tss)); @@ -65,6 +65,14 @@ mmuinit(void) ptr[2] = (x>>16) & 0xFFFF; lidt(ptr); + /* make kernel text unwritable */ + for(x = KTZERO; x < (ulong)etext; x += BY2PG){ + p = mmuwalk(m->pdb, x, 2, 0); + if(p == nil) + panic("mmuinit"); + *p &= ~PTEWRITE; + } + taskswitch(PADDR(m->pdb), (ulong)m + BY2PG); ltr(TSSSEL); }