X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fuserprog%2Fexception.c;h=19aca125e331783bad87330e8e7213f72072e580;hb=9a4067dc5bd3d810ce4b1d9dd8ba394dee4c247b;hp=47bfbc278878595b1cf0fa15d73d374057a994d7;hpb=42428b5613cb885d3d1fa9933f6dc51f5a6c8019;p=pintos-anon diff --git a/src/userprog/exception.c b/src/userprog/exception.c index 47bfbc2..19aca12 100644 --- a/src/userprog/exception.c +++ b/src/userprog/exception.c @@ -24,8 +24,8 @@ static void page_fault (struct intr_frame *); way as other exceptions, but this will need to change to implement virtual memory. - Refer to [IA32-v3] section 5.14 for a description of each of - these exceptions. */ + Refer to [IA32-v3a] section 5.15 "Exception and Interrupt + Reference" for a description of each of these exceptions. */ void exception_init (void) { @@ -114,11 +114,11 @@ kill (struct intr_frame *f) At entry, the address that faulted is in CR2 (Control Register 2) and information about the fault, formatted as described in - the PF_* macros above, is in F's error_code member. The + the PF_* macros in exception.h, is in F's error_code member. The example code here shows how to parse that information. You can find more information about both of these in the description of "Interrupt 14--Page Fault Exception (#PF)" in - [IA32-v3] section 5.14, which is pages 5-46 to 5-49. */ + [IA32-v3a] section 5.15 "Exception and Interrupt Reference". */ static void page_fault (struct intr_frame *f) { @@ -132,7 +132,7 @@ page_fault (struct intr_frame *f) data. It is not necessarily the address of the instruction that caused the fault (that's f->eip). See [IA32-v2a] "MOV--Move to/from Control Registers" and - [IA32-v3] 5.14 "Interrupt 14--Page Fault Exception + [IA32-v3a] 5.15 "Interrupt 14--Page Fault Exception (#PF)". */ asm ("movl %%cr2, %0" : "=r" (fault_addr));