🆕 do_execve函数,跳转至应用层

This commit is contained in:
fslongjin
2022-02-13 22:41:35 +08:00
parent 781a105d2f
commit 0757e7a3cd
8 changed files with 178 additions and 93 deletions

View File

@ -111,12 +111,12 @@ SetUp_TSS64:
addq $103, %rax //
leaq GDT_Table(%rip), %rdi
movq %rax, 64(%rdi) // BGDT8
movq %rax, 80(%rdi) // BGDT10
shrq $32, %rdx
movq %rdx, 72(%rdi) // 8BGDT9
movq %rdx, 88(%rdi) // 8BGDT11
// (main.c使load_TR)
// mov $0x40, %ax // 64
// mov $0x50, %ax // 80
// ltr %ax
//
@ -152,7 +152,7 @@ ENTRY(_stack_start)
.org 0x1000 //0x1000
__PML4E:
.quad 0x102007 // 访 31~12
.quad 0x102007 // 访 31~12
.fill 255,8,0
.quad 0x102007
.fill 255,8,0
@ -161,26 +161,26 @@ __PML4E:
__PDPTE:
.quad 0x103003 // 访
.quad 0x103007 // 访
.fill 511,8,0
.org 0x3000
__PDE:
.quad 0x000083 // 访
.quad 0x200083
.quad 0x400083
.quad 0x600083
.quad 0x800083
.quad 0xe0000083 /*0x a00000*/
.quad 0xe0200083
.quad 0xe0400083
.quad 0xe0600083 /*0x1000000*/
.quad 0xe0800083
.quad 0xe0a00083
.quad 0xe0c00083
.quad 0xe0e00083
.quad 0x000087 // 访
.quad 0x200087
.quad 0x400087
.quad 0x600087
.quad 0x800087
.quad 0xe0000087 /*0x a00000*/
.quad 0xe0200087
.quad 0xe0400087
.quad 0xe0600087 /*0x1000000*/
.quad 0xe0800087
.quad 0xe0a00087
.quad 0xe0c00087
.quad 0xe0e00087
.fill 499,8,0
// GDT
@ -188,14 +188,16 @@ __PDE:
.global GDT_Table // 使GDT访
GDT_Table:
.quad 0x0000000000000000 // 0 00
.quad 0x0020980000000000 // 1 64 08
.quad 0x0000920000000000 // 2 64 10
.quad 0x0020f80000000000 // 3 64 18
.quad 0x0000f20000000000 // 4 64 20
.quad 0x00cf9a000000ffff // 5 32 28
.quad 0x00cf92000000ffff // 6 32 30
.fill 10, 8, 0 // 8~9 TSS() 80
.quad 0x0000000000000000 // 0 0x00
.quad 0x0020980000000000 // 1 64 0x08
.quad 0x0000920000000000 // 2 64 0x10
.quad 0x0000000000000000 // 3 32 0x18
.quad 0x0000000000000000 // 4 32 0x20
.quad 0x0020f80000000000 // 5 64 0x28
.quad 0x0000f20000000000 // 6 64 0x30
.quad 0x00cf9a000000ffff // 7 32 0x38
.quad 0x00cf92000000ffff // 8 32 0x40
.fill 10, 8, 0 // 10-11 TSS(9) 80
GDT_END:
GDT_POINTER: