- exact magic values for entered/nonentered states in recursive enter check
- read_*() functions to read segment selector values - decode loaded segments on panic
This commit is contained in:
@@ -41,6 +41,9 @@
|
||||
.define _thecr3
|
||||
.define _write_cr4
|
||||
.define _catch_pagefaults
|
||||
.define _read_ds
|
||||
.define _read_cs
|
||||
.define _read_ss
|
||||
|
||||
! The routines only guarantee to preserve the registers the C compiler
|
||||
! expects to be preserved (ebx, esi, edi, ebp, esp, segment registers, and
|
||||
@@ -573,6 +576,20 @@ _write_cr4:
|
||||
pop ebp
|
||||
ret
|
||||
|
||||
_read_ds:
|
||||
mov eax, 0
|
||||
mov ax, ds
|
||||
ret
|
||||
|
||||
_read_cs:
|
||||
mov eax, 0
|
||||
mov ax, cs
|
||||
ret
|
||||
|
||||
_read_ss:
|
||||
mov eax, 0
|
||||
mov ax, ss
|
||||
ret
|
||||
|
||||
!*===========================================================================*
|
||||
!* getcr3val *
|
||||
|
||||
@@ -403,6 +403,10 @@ PUBLIC void printseg(char *banner, int iscs, struct proc *pr, u32_t selector)
|
||||
kprintf("invalid index in ldt\n");
|
||||
return;
|
||||
}
|
||||
if(!pr) {
|
||||
kprintf("local selector but unknown process\n");
|
||||
return;
|
||||
}
|
||||
desc = &pr->p_seg.p_ldt[index];
|
||||
} else {
|
||||
kprintf("GDT");
|
||||
|
||||
Reference in New Issue
Block a user