* same with xv6
[mascara-docs.git] / i386 / ucla / src / lab4 / user / readonlytext.c
blob1ff2dbd70677c6686b55a9de997360ec7f578a2c
1 #include <inc/lib.h>
2 #include <inc/x86.h>
4 void
5 my_handler(struct UTrapframe *utf)
7 if (utf->utf_fault_va == (uintptr_t) my_handler
8 && (utf->utf_err & FEC_U)
9 && (utf->utf_err & FEC_W)
10 && (utf->utf_err & FEC_PR))
11 cprintf("program text is read-only\n");
12 else
13 cprintf("unexpected page fault\n");
14 sys_env_destroy(0);
17 asmlinkage void
18 umain(int argc, char **argv)
20 set_pgfault_handler(my_handler);
22 volatile uint32_t *ptr = (volatile uint32_t *) my_handler;
23 *ptr = *ptr;
25 cprintf("should not be reached\n");