spacing
This commit is contained in:
parent
5d0fe3445b
commit
3fd50978a8
2 changed files with 17 additions and 20 deletions
3
BUGS
3
BUGS
|
@ -1,9 +1,6 @@
|
||||||
index:
|
index:
|
||||||
SEG_NULL, SEG_ASM not in the index
|
SEG_NULL, SEG_ASM not in the index
|
||||||
|
|
||||||
mmu.h:
|
|
||||||
funny \ alignment in mmu.h
|
|
||||||
|
|
||||||
proc.c:
|
proc.c:
|
||||||
as a consequence of the implementation of proc_kill,
|
as a consequence of the implementation of proc_kill,
|
||||||
any loop calling sleep should check for p->killed
|
any loop calling sleep should check for p->killed
|
||||||
|
|
34
mmu.h
34
mmu.h
|
@ -47,12 +47,12 @@ struct segdesc {
|
||||||
// Normal segment
|
// Normal segment
|
||||||
#define SEG(type, base, lim, dpl) (struct segdesc) \
|
#define SEG(type, base, lim, dpl) (struct segdesc) \
|
||||||
{ ((lim) >> 12) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff, \
|
{ ((lim) >> 12) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff, \
|
||||||
type, 1, dpl, 1, (uint) (lim) >> 28, 0, 0, 1, 1, \
|
type, 1, dpl, 1, (uint) (lim) >> 28, 0, 0, 1, 1, \
|
||||||
(uint) (base) >> 24 }
|
(uint) (base) >> 24 }
|
||||||
|
|
||||||
#define SEG16(type, base, lim, dpl) (struct segdesc) \
|
#define SEG16(type, base, lim, dpl) (struct segdesc) \
|
||||||
{ (lim) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff, \
|
{ (lim) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff, \
|
||||||
type, 1, dpl, 1, (uint) (lim) >> 16, 0, 0, 1, 0, \
|
type, 1, dpl, 1, (uint) (lim) >> 16, 0, 0, 1, 0, \
|
||||||
(uint) (base) >> 24 }
|
(uint) (base) >> 24 }
|
||||||
|
|
||||||
#define DPL_USER 0x3 // User DPL
|
#define DPL_USER 0x3 // User DPL
|
||||||
|
@ -81,9 +81,9 @@ struct segdesc {
|
||||||
|
|
||||||
// Task state segment format
|
// Task state segment format
|
||||||
struct taskstate {
|
struct taskstate {
|
||||||
uint link; // Old ts selector
|
uint link; // Old ts selector
|
||||||
uint esp0; // Stack pointers and segment selectors
|
uint esp0; // Stack pointers and segment selectors
|
||||||
ushort ss0; // after an increase in privilege level
|
ushort ss0; // after an increase in privilege level
|
||||||
ushort padding1;
|
ushort padding1;
|
||||||
uint *esp1;
|
uint *esp1;
|
||||||
ushort ss1;
|
ushort ss1;
|
||||||
|
@ -91,10 +91,10 @@ struct taskstate {
|
||||||
uint *esp2;
|
uint *esp2;
|
||||||
ushort ss2;
|
ushort ss2;
|
||||||
ushort padding3;
|
ushort padding3;
|
||||||
void *cr3; // Page directory base
|
void *cr3; // Page directory base
|
||||||
uint *eip; // Saved state from last task switch
|
uint *eip; // Saved state from last task switch
|
||||||
uint eflags;
|
uint eflags;
|
||||||
uint eax; // More saved state (registers)
|
uint eax; // More saved state (registers)
|
||||||
uint ecx;
|
uint ecx;
|
||||||
uint edx;
|
uint edx;
|
||||||
uint ebx;
|
uint ebx;
|
||||||
|
@ -102,7 +102,7 @@ struct taskstate {
|
||||||
uint *ebp;
|
uint *ebp;
|
||||||
uint esi;
|
uint esi;
|
||||||
uint edi;
|
uint edi;
|
||||||
ushort es; // Even more saved state (segment selectors)
|
ushort es; // Even more saved state (segment selectors)
|
||||||
ushort padding4;
|
ushort padding4;
|
||||||
ushort cs;
|
ushort cs;
|
||||||
ushort padding5;
|
ushort padding5;
|
||||||
|
@ -116,8 +116,8 @@ struct taskstate {
|
||||||
ushort padding9;
|
ushort padding9;
|
||||||
ushort ldt;
|
ushort ldt;
|
||||||
ushort padding10;
|
ushort padding10;
|
||||||
ushort t; // Trap on task switch
|
ushort t; // Trap on task switch
|
||||||
ushort iomb; // I/O map base address
|
ushort iomb; // I/O map base address
|
||||||
};
|
};
|
||||||
|
|
||||||
// Gate descriptors for interrupts and traps
|
// Gate descriptors for interrupts and traps
|
||||||
|
@ -141,16 +141,16 @@ struct gatedesc {
|
||||||
// - dpl: Descriptor Privilege Level -
|
// - dpl: Descriptor Privilege Level -
|
||||||
// the privilege level required for software to invoke
|
// the privilege level required for software to invoke
|
||||||
// this interrupt/trap gate explicitly using an int instruction.
|
// this interrupt/trap gate explicitly using an int instruction.
|
||||||
#define SETGATE(gate, istrap, sel, off, d) \
|
#define SETGATE(gate, istrap, sel, off, d) \
|
||||||
{ \
|
{ \
|
||||||
(gate).off_15_0 = (uint) (off) & 0xffff; \
|
(gate).off_15_0 = (uint) (off) & 0xffff; \
|
||||||
(gate).ss = (sel); \
|
(gate).ss = (sel); \
|
||||||
(gate).args = 0; \
|
(gate).args = 0; \
|
||||||
(gate).rsv1 = 0; \
|
(gate).rsv1 = 0; \
|
||||||
(gate).type = (istrap) ? STS_TG32 : STS_IG32; \
|
(gate).type = (istrap) ? STS_TG32 : STS_IG32; \
|
||||||
(gate).s = 0; \
|
(gate).s = 0; \
|
||||||
(gate).dpl = (d); \
|
(gate).dpl = (d); \
|
||||||
(gate).p = 1; \
|
(gate).p = 1; \
|
||||||
(gate).off_31_16 = (uint) (off) >> 16; \
|
(gate).off_31_16 = (uint) (off) >> 16; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue