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
A Total Overhaul on the Lunaix's Virtual Memory Model (#26)
[lunaix-os.git]
/
lunaix-os
/
arch
/
i386
/
pcontext.c
diff --git
a/lunaix-os/arch/i386/pcontext.c
b/lunaix-os/arch/i386/pcontext.c
index a0ff6a69f1aa0ab82c75a005731ce7a15d23363b..6b56b418d21fc1ccab194b50e8f3940b5771c1af 100644
(file)
--- a/
lunaix-os/arch/i386/pcontext.c
+++ b/
lunaix-os/arch/i386/pcontext.c
@@
-13,17
+13,17
@@
volatile struct x86_tss _tss = { .link = 0,
bool
inject_transfer_context(ptr_t vm_mnt, struct transfer_context* tctx)
{
bool
inject_transfer_context(ptr_t vm_mnt, struct transfer_context* tctx)
{
-
v_mapping mapping
;
- if (!vmm_lookupat(vm_mnt, tctx->inject, &
mapping
)) {
+
pte_t pte
;
+ if (!vmm_lookupat(vm_mnt, tctx->inject, &
pte
)) {
return false;
}
return false;
}
-
vmm_mount_pg(PG_MOUNT_4, mapping.pa
);
+
mount_page(PG_MOUNT_4, pte_paddr(pte)
);
- ptr_t mount_inject = PG_MOUNT_4 +
PG_OFFSET
(tctx->inject);
+ ptr_t mount_inject = PG_MOUNT_4 +
va_offset
(tctx->inject);
memcpy((void*)mount_inject, &tctx->transfer, sizeof(tctx->transfer));
memcpy((void*)mount_inject, &tctx->transfer, sizeof(tctx->transfer));
-
vmm_unmount_pg
(PG_MOUNT_4);
+
unmount_page
(PG_MOUNT_4);
return true;
}
return true;
}