remove _PG_X

This commit is contained in:
Yanyan Jiang 2018-02-22 03:27:25 -05:00
parent 67a83b0b0b
commit 72f089ded6
3 changed files with 9 additions and 4 deletions

View File

@ -75,6 +75,9 @@
* `_Protect`描述一个被保护的地址空间,包含:
* `_Area area`: 可以使用的地址空间
* `ptr`: 体系结构相关的指针供AM内部使用
* Permissions:
* read: `_PG_R`
* write: `_PG_W`
### PTE API

View File

@ -79,7 +79,6 @@ int _istatus(int enable);
#define _PG_R 1
#define _PG_W 2
#define _PG_X 4
void _pte_init(void*(*palloc)(), void (*pfree)(void*));
void _protect(_Protect *p);
void _release(_Protect *p);

View File

@ -95,7 +95,7 @@ void *_query(_Protect *p, void *va, int *mode) {
return NULL;
}
if (mode) {
*mode = ((*pte & PTE_W) ? _PG_W : 0) | _PG_R | _PG_X;
*mode = ((*pte & PTE_W) ? _PG_W : 0) | _PG_R;
}
return (void*)PTE_ADDR(*pte);
}
@ -103,7 +103,7 @@ void *_query(_Protect *p, void *va, int *mode) {
void _unmap(_Protect *p, void *va) {
}
_RegSet *_umake(_Protect *p, _Area ustack, _Area kstack, void *entry, char *const argv[], char *const envp[]) {
_RegSet *_umake(_Protect *p, _Area ustack, _Area kstack, void *entry, int argc, char **argv, char **enpv) {
_RegSet *regs = (_RegSet*)kstack.start;
regs->cs = USEL(SEG_UCODE);
regs->ds = regs->es = regs->ss = USEL(SEG_UDATA);
@ -115,7 +115,10 @@ _RegSet *_umake(_Protect *p, _Area ustack, _Area kstack, void *entry, char *cons
uint32_t esp = regs->esp3;
regs->esp3 = esp;
// TODO: implement umake
// TODO:
// push (argc, argv, envp) to ustack
// prepare kstack
// make every register correct
return regs;
}