git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: Ability to send command to ATA device.
[lunaix-os.git]
/
lunaix-os
/
kernel
/
asm
/
x86
/
pfault.c
diff --git
a/lunaix-os/kernel/asm/x86/pfault.c
b/lunaix-os/kernel/asm/x86/pfault.c
index fcf373997f926dc58d73314e3df81ac02443c0dc..6df3182622bce973794b360cb01cb91f5e138843 100644
(file)
--- a/
lunaix-os/kernel/asm/x86/pfault.c
+++ b/
lunaix-os/kernel/asm/x86/pfault.c
@@
-41,17
+41,17
@@
intr_routine_page_fault(const isr_param* param)
if (do_kernel(&mapping)) {
return;
}
if (do_kernel(&mapping)) {
return;
}
- goto segv_term;
+ // 如果不是,那么看看内核是不是需要用户页。
}
struct mm_region* hit_region = region_get(&__current->mm.regions, ptr);
if (!hit_region) {
}
struct mm_region* hit_region = region_get(&__current->mm.regions, ptr);
if (!hit_region) {
- //
Into the void...
+ //
当你凝视深渊时……
goto segv_term;
}
goto segv_term;
}
- x86_pte_t* pte = &PTE_MOUNTED(PD_REFERENCED, ptr >> 12);
+
volatile
x86_pte_t* pte = &PTE_MOUNTED(PD_REFERENCED, ptr >> 12);
if ((*pte & PG_PRESENT)) {
if ((hit_region->attr & COW_MASK) == COW_MASK) {
// normal page fault, do COW
if ((*pte & PG_PRESENT)) {
if ((hit_region->attr & COW_MASK) == COW_MASK) {
// normal page fault, do COW