wish to pass them around.
Suggested by Godmar Back.
At entry, the address that faulted is in CR2 (Control Register
2) and information about the fault, formatted as described in
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
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
#ifndef USERPROG_EXCEPTION_H
#define USERPROG_EXCEPTION_H
#ifndef USERPROG_EXCEPTION_H
#define USERPROG_EXCEPTION_H
+/* Page fault error code bits that describe the cause of the exception. */
+#define PF_P 0x1 /* 0: not-present page. 1: access rights violation. */
+#define PF_W 0x2 /* 0: read, 1: write. */
+#define PF_U 0x4 /* 0: kernel, 1: user process. */
+
void exception_init (void);
void exception_print_stats (void);
void exception_init (void);
void exception_print_stats (void);