InvlPg -> InvalidatePage

remove old real-mode code
Clean up some debug functions
This commit is contained in:
xmm15 2020-02-19 19:04:28 -06:00
parent fcd1560d88
commit a8c0bc9903
11 changed files with 216 additions and 277 deletions

Binary file not shown.

Binary file not shown.

View File

@ -33,4 +33,4 @@ U0 StartUpTasks()
StartUpTasks; StartUpTasks;
"\nZenithOS V %5.3f\t%D %T\n\n",sys_os_version,sys_compile_time,sys_compile_time; "\nZenithOS V %5.2f\t%D %T\n\n",sys_os_version,sys_compile_time,sys_compile_time;

Binary file not shown.

View File

@ -1,44 +1,30 @@
Bool CheckPtr(U8 *ptr) Bool CheckPtr(U8 *ptr)
{//Check if addr is valid ptr. {//Check if addr is valid ptr.
if (mem_heap_base<=ptr<=mem_mapped_space) { if (mem_heap_base <= ptr <= mem_mapped_space)
if (*MemPageTable(ptr)&1) return *MemPageTable(ptr) & 1;
return TRUE;
else
return FALSE;
} else if (ptr<mem_boot_base)
return FALSE;
else if (ptr<VGAM_GRAPHICS)
return TRUE;
else else
return FALSE; return mem_boot_base < ptr < VGAM_GRAPHICS;
} }
Bool CheckCodePtr(U8 *ptr) Bool CheckCodePtr(U8 *ptr)
{//Check if addr is valid code addr. {//Check if addr is valid code addr.
if (mem_heap_base<=ptr<=mem_heap_limit) { if (mem_heap_base <= ptr <= mem_heap_limit)
if (*MemPageTable(ptr)&1) return *MemPageTable(ptr) & 1;
return TRUE;
else
return FALSE;
} else if (ptr<mem_boot_base)
return FALSE;
else if (ptr<VGAM_GRAPHICS)
return TRUE;
else else
return FALSE; return mem_boot_base < ptr < VGAM_GRAPHICS;
} }
Bool CheckOnStack(U8 *ptr,CTask *task=NULL) Bool CheckOnStack(U8 *ptr,CTask *task=NULL)
{//Check if addr is valid stack addr. {//Check if addr is valid stack addr.
Bool res=FALSE; Bool res = FALSE;
PUSHFD PUSHFD
CLI CLI
if (task) { if(task) {
if (&task->stack->stack_base<=ptr<= if (&task->stack->stack_base <= ptr <= (&task->stack->stack_base)(U8 *) + task->stack->stack_size)
(&task->stack->stack_base)(U8 *)+task->stack->stack_size)
res=TRUE; res=TRUE;
} else if (mem_heap_base<=ptr<=mem_heap_limit) }
res=TRUE; else if (mem_heap_base <= ptr <= mem_heap_limit)
res = TRUE;
POPFD POPFD
return res; return res;
} }
@ -46,13 +32,14 @@ Bool CheckOnStack(U8 *ptr,CTask *task=NULL)
I64 UnusedStack(CTask *task=NULL) I64 UnusedStack(CTask *task=NULL)
{//Count of usused bytes in task's stack. {//Count of usused bytes in task's stack.
I64 res; I64 res;
if (!task) task=Fs; if (!task)
task=Fs;
PUSHFD PUSHFD
CLI CLI
if (task==Fs) if (task == Fs)
res=GetRSP()(U8 *)-(&task->stack->stack_base)(U8 *); res = GetRSP()(U8 *) - (&task->stack->stack_base)(U8 *);
else else
res=task->rsp(U8 *)-(&task->stack->stack_base)(U8 *); res = task->rsp(U8 *) - (&task->stack->stack_base)(U8 *);
POPFD POPFD
return res; return res;
} }
@ -286,7 +273,7 @@ I64 *TaskRegAddr(CTask *task,I64 reg_num)
return NULL; return NULL;
} }
#define RAWDR_COL (text.cols-40) #define RAWDR_COL (text.cols-40)
U0 RawDr(CTask *task=NULL) U0 RawDr(CTask *task=NULL)
{ {

View File

@ -211,15 +211,7 @@ GET_IP: POP BX
INT 0x10 INT 0x10
CMP AX, 0x004F CMP AX, 0x004F
JNE @@10 JNE @@10

// MOV AX,0x4F02
// MOV BX,0x12 //640x480 16 color
//#exe {
// if (!kernel_config->opts[CONFIG_TEXT_MODE])
// StreamPrint("INT 0x10"); //Enable VGA
//};
// CMP AX,0x004F
// JNE @@10 //Jmp if fail
BTS U32 [SYS_RUN_LEVEL],RLf_VESA BTS U32 [SYS_RUN_LEVEL],RLf_VESA
@@10: @@10:

File diff suppressed because one or more lines are too long

View File

@ -393,7 +393,7 @@ class CSysLimitBase
#define MEM_E820t_BAD_MEM 5 #define MEM_E820t_BAD_MEM 5
#define MEM_E820t_PERM_MEM 7 #define MEM_E820t_PERM_MEM 7
class CMemE820 class CMemE820
{ {
U8 *base; U8 *base;
I64 len; I64 len;
@ -3845,25 +3845,6 @@ public class CDC
#help_index "Devices" #help_index "Devices"
//VGA Memory //VGA Memory
#define VGAM_GRAPHICS 0xA0000 #define VGAM_GRAPHICS 0xA0000
#define VGAM_TEXT 0xB8000
//VGA I/O ports
#define VGAP_ATTR_INDEX 0x03C0
#define VGAP_ATTR_DATA_WRITE 0x03C0 //alias
#define VGAP_ATTR_DATA_READ 0x03C1
#define VGAP_MISC_OUTPUT 0x03C2
#define VGAP_IDX 0x03C4
#define VGAP_DATA 0x03C5
#define VGAP_PALETTE_MASK 0x03C6
#define VGAP_REG_READ 0x03C7
#define VGAP_REG_WRITE 0x03C8
#define VGAP_PALETTE_DATA 0x03C9
#define VGAP_CRTC_INDEX 0x03D4
#define VGAP_CRTC_DATA 0x03D5
#define VGAP_INPUT_STAT 0x03DA
//VGA Registers
#define VGAR_MAP_MASK 0x02
#help_index "Compression/Piece by Piece" #help_index "Compression/Piece by Piece"
#define ARC_BITS_MAX 12 #define ARC_BITS_MAX 12

View File

@ -264,7 +264,7 @@ public _extern SYS_CACHE_LINE_WIDTH
#help_index "Processor/Page Tables;Memory/Page Tables" #help_index "Processor/Page Tables;Memory/Page Tables"
public _intern IC_INVLPG public _intern IC_INVLPG
U0 InvlPg(U8 *a); //Invalidate page at addr inst. U0 InvalidatePage(U8 *a); //Invalidate page at addr inst.
public _extern MEM_PAGE_SIZE U64 mem_page_size; public _extern MEM_PAGE_SIZE U64 mem_page_size;
#help_index "Task;Processor" #help_index "Task;Processor"
@ -275,7 +275,7 @@ public _intern IC_FS CTask *Fs(); //FS seg reg points to the current $LK,"CTask"
public _intern IC_RDTSC I64 GetTSC(); //Get time stamp counter. public _intern IC_RDTSC I64 GetTSC(); //Get time stamp counter.
#help_index "Graphics/VBE" #help_index "Graphics/VBE"
public _extern SYS_VBE_INFO CVBEInfo sys_vbe_info; public _extern SYS_VBE_INFO CVBEInfo sys_vbe_info;
public _extern SYS_VBE_FINAL_MODE CVBEMode sys_vbe_mode; public _extern SYS_VBE_FINAL_MODE CVBEMode sys_vbe_mode;
_extern SYS_VBE_FINAL U16 sys_vbe_mode_num; _extern SYS_VBE_FINAL U16 sys_vbe_mode_num;
_extern SYS_VBE_MODES CVBEModeShort sys_vbe_modes[VBE_MODES_NUM]; _extern SYS_VBE_MODES CVBEModeShort sys_vbe_modes[VBE_MODES_NUM];

View File

@ -116,7 +116,7 @@ U8 *Mem64DevAlloc(I64 *_pages1Gig)
do { do {
pte=MemPageTable(a); pte=MemPageTable(a);
*pte=*pte&~0x18 |0x11; //Uncached and present *pte=*pte&~0x18 |0x11; //Uncached and present
InvlPg(dev.mem64_ptr); InvalidatePage(dev.mem64_ptr);
a+=mem_page_size; a+=mem_page_size;
} while (a-dev.mem64_ptr<1<<30); } while (a-dev.mem64_ptr<1<<30);
} }
@ -143,7 +143,7 @@ U0 UncachedAliasAlloc() //Make uncached alias for 4 lowest Gig.
do { do {
pte=MemPageTable(a); pte=MemPageTable(a);
*pte=0x197+a-dev.uncached_alias; *pte=0x197+a-dev.uncached_alias;
InvlPg(a); InvalidatePage(a);
a+=mem_page_size; a+=mem_page_size;
} while (a-dev.uncached_alias<1<<32); } while (a-dev.uncached_alias<1<<32);
} }

Binary file not shown.