[????] BUILD 0.1.1.50 DATE 9/20/2011 AT 12:43 PM
==================================================== Mainly changed: Tasking + Implemented multitasking + Switching works ? TODO: Fix other not working tasking routines
This commit is contained in:
parent
581c6b92fe
commit
17342b6665
4
2011-09-20-09-23-01.013-VirtualBox.exe-4472.log
Normal file
4
2011-09-20-09-23-01.013-VirtualBox.exe-4472.log
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Log created: 2011-09-20T09:23:01.130988600Z
|
||||||
|
Executable: C:\PROGRA~1\oracle\Virtua~1\VirtualBox.exe
|
||||||
|
Commandline: C:\PROGRA~1\oracle\Virtua~1\\virtualbox --startvm "lux Testbed" --dbg
|
||||||
|
fatal error in recompiler cpu: triple fault
|
@ -118,3 +118,9 @@ int32 LogWrite (uint8 error, string device, string format, ...)
|
|||||||
ConsoleCursorUpdateHardware();
|
ConsoleCursorUpdateHardware();
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LogAssert (int32 condition, string file, int32 line)
|
||||||
|
{
|
||||||
|
if (!condition)
|
||||||
|
Panic("Assert", "Assertion failed in file %s line %d.\n", file, line);
|
||||||
|
}
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
volatile TimeSystem _internal_time;
|
volatile TimeSystem _internal_time;
|
||||||
uint32 _internal_frequency_hz;
|
uint32 _internal_frequency_hz;
|
||||||
|
|
||||||
extern void TaskSwitch ();
|
extern void TaskSwitch (_RegsStack32* regs);
|
||||||
|
|
||||||
void TimeHandler(_RegsStack32* UNUSED(r))
|
void TimeHandler(_RegsStack32* r)
|
||||||
{
|
{
|
||||||
if (_internal_frequency_hz == 0) return;
|
if (_internal_frequency_hz == 0) return;
|
||||||
|
|
||||||
@ -19,5 +19,5 @@ void TimeHandler(_RegsStack32* UNUSED(r))
|
|||||||
_internal_time.Time-=MILISECONDS_IN_DAY;
|
_internal_time.Time-=MILISECONDS_IN_DAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskSwitch();
|
TaskSwitch(r);
|
||||||
}
|
}
|
||||||
|
@ -70,8 +70,8 @@ void CrashMessage(_RegsStack32 *r)
|
|||||||
ConsoleCursorGoto(c); ConsoleWrite("eflags=0x%x", r->eflags);
|
ConsoleCursorGoto(c); ConsoleWrite("eflags=0x%x", r->eflags);
|
||||||
ConsoleCursorGoto(d); ConsoleWrite("useresp=0x%x\n", r->useresp);
|
ConsoleCursorGoto(d); ConsoleWrite("useresp=0x%x\n", r->useresp);
|
||||||
|
|
||||||
ConsoleCursorGoto(a); ConsoleWrite("gs=0x%x", r->ss);
|
ConsoleCursorGoto(a); ConsoleWrite("ss=0x%x", r->ss);
|
||||||
ConsoleCursorGoto(b); ConsoleWrite("fs=0x%x", r->int_no);
|
ConsoleCursorGoto(b); ConsoleWrite("int_no=0x%x", r->int_no);
|
||||||
ConsoleCursorGoto(c); ConsoleWrite("err_code=0x%x", r->err_code);
|
ConsoleCursorGoto(c); ConsoleWrite("err_code=0x%x", r->err_code);
|
||||||
|
|
||||||
// Useful info about page fault
|
// Useful info about page fault
|
||||||
|
@ -65,10 +65,12 @@ extern void ConsoleMain();
|
|||||||
// External test routines
|
// External test routines
|
||||||
extern void SystemPanic();
|
extern void SystemPanic();
|
||||||
extern int32 LogWrite (uint8 error, string device, string format, ...);
|
extern int32 LogWrite (uint8 error, string device, string format, ...);
|
||||||
|
extern void LogAssert (int32 condition, string file, int32 line);
|
||||||
|
|
||||||
// Debug print
|
// Debug print
|
||||||
#define Log(dev, ...) { LogWrite(0, dev, __VA_ARGS__); }
|
#define Log(dev, ...) { LogWrite(0, dev, __VA_ARGS__); }
|
||||||
#define Error(dev, ...) { LogWrite(1, dev, __VA_ARGS__); }
|
#define Error(dev, ...) { LogWrite(1, dev, __VA_ARGS__); }
|
||||||
#define Panic(dev, ...) { LogWrite(1, dev, __VA_ARGS__); SystemPanic(); }
|
#define Panic(dev, ...) { LogWrite(1, dev, __VA_ARGS__); SystemPanic(); }
|
||||||
|
#define Assert(c) { LogAssert(c, __FILE__, __LINE__); }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,10 +13,11 @@
|
|||||||
|
|
||||||
typedef struct _Task {
|
typedef struct _Task {
|
||||||
uint32 Pid;
|
uint32 Pid;
|
||||||
uint32 Esp, Ebp; // Stack
|
uint32 Eip, Esp, Ebp;
|
||||||
PageDirectory* Pd;
|
PageDirectory* Pd;
|
||||||
uint32 StackLowerBase;
|
uint32 StackLowerBase;
|
||||||
uint32 StackUpperBase;
|
uint32 StackUpperBase;
|
||||||
|
uint8 Initialized;
|
||||||
struct _Task* Next;
|
struct _Task* Next;
|
||||||
} Task;
|
} Task;
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
#define OS_BUILD "0.1.1.19"
|
#define OS_BUILD "0.1.1.50"
|
||||||
|
7
Kernel/tasking/tasking-asm.asm
Normal file
7
Kernel/tasking/tasking-asm.asm
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
; tasking.asm
|
||||||
|
bits 32
|
||||||
|
|
||||||
|
global TaskReadEip
|
||||||
|
TaskReadEip:
|
||||||
|
pop eax
|
||||||
|
jmp eax
|
@ -7,27 +7,41 @@
|
|||||||
|
|
||||||
#include <tasking.h>
|
#include <tasking.h>
|
||||||
#include <memory-add.h>
|
#include <memory-add.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
Task* TaskList;
|
Task* TaskList;
|
||||||
Task* CurrentTask;
|
Task* CurrentTask;
|
||||||
uint32 NextPid = 1;
|
uint32 NextPid = 1;
|
||||||
|
|
||||||
void TaskSwitch ()
|
void TaskSwitch (_RegsStack32* regs)
|
||||||
{
|
{
|
||||||
|
MagicBreakpoint();
|
||||||
|
|
||||||
if (!TaskList) return;
|
if (!TaskList) return;
|
||||||
|
|
||||||
|
uint32 eip = TaskReadEip();
|
||||||
|
if (eip == 0xABCDEF) return;
|
||||||
|
|
||||||
// Save context
|
// Save context
|
||||||
asm volatile ("mov %%esp, %0" : "=r"(CurrentTask->Esp)); // Stack pointer
|
asm volatile ("mov %%esp, %0" : "=r"(CurrentTask->Esp));
|
||||||
asm volatile ("mov %%ebp, %0" : "=r"(CurrentTask->Ebp)); // Base pointer
|
asm volatile ("mov %%ebp, %0" : "=r"(CurrentTask->Ebp));
|
||||||
CurrentTask->Pd = CurrentDirectory;
|
CurrentTask->Eip = eip;
|
||||||
|
|
||||||
// Next task
|
// Next task
|
||||||
CurrentTask = (!CurrentTask->Next) ? TaskList : CurrentTask->Next ;
|
CurrentTask = (!CurrentTask->Next) ? TaskList : CurrentTask->Next ;
|
||||||
|
|
||||||
// Switch context
|
// Switch context
|
||||||
PagingSwitchDirectory(CurrentTask->Pd);
|
PagingSwitchDirectory(CurrentTask->Pd);
|
||||||
asm volatile ("mov %0, %%esp" : : "r"(CurrentTask->Esp)); // Stack pointer
|
|
||||||
asm volatile ("mov %0, %%ebp" : : "r"(CurrentTask->Ebp)); // Base pointer
|
// Prepare for jump
|
||||||
|
asm volatile (""
|
||||||
|
"mov %0, %%ebp; "
|
||||||
|
"mov %1, %%esp; "
|
||||||
|
"mov %2, %%ecx; "
|
||||||
|
"mov $0xABCDEF, %%eax; "
|
||||||
|
"jmp *%%ecx; "
|
||||||
|
: : "r"(CurrentTask->Ebp), "r"(CurrentTask->Esp), "r"(CurrentTask->Eip)
|
||||||
|
: "eax", "ecx");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback for new tasks
|
// Fallback for new tasks
|
||||||
@ -64,25 +78,16 @@ void TaskCreate (void (*func)())
|
|||||||
t->Pid = NextPid++;
|
t->Pid = NextPid++;
|
||||||
|
|
||||||
// Set up stack
|
// Set up stack
|
||||||
*(uint32 *) (t->StackUpperBase - 0x4) = (uint32) TaskEnd; // Fallback function
|
/*memset(&t->Regs, 0, sizeof(_RegsStack32));
|
||||||
t->Ebp = (uint32) t->StackUpperBase;
|
t->Regs.ebp = t->StackUpperBase;
|
||||||
|
t->Regs.esp = (t->StackUpperBase - 0x4 - sizeof(_RegsStack32));
|
||||||
|
t->Regs.useresp = t->StackUpperBase - 0x4;
|
||||||
|
t->Regs.eip = (uint32) func;
|
||||||
|
*(uint32 *) (t->Regs.esp) = (uint32) TaskEnd; // Fallback function
|
||||||
|
t->Initialized = 0;
|
||||||
|
|
||||||
_RegsStack32* regs = (_RegsStack32*) (t->StackUpperBase - 0x4 - sizeof(_RegsStack32));
|
// Read eflags
|
||||||
|
asm volatile ("pushf; pop %0" : "=r"(t->Regs.eflags));*/
|
||||||
asm volatile ("mov %%ss, %0" : "=r" (regs->ss));
|
|
||||||
asm volatile ("mov %%cs, %0" : "=r" (regs->cs));
|
|
||||||
asm volatile ("pushf; pop %0" : "=r" (regs->eflags));
|
|
||||||
asm volatile ("mov %%esi, %0" : "=r" (regs->esi));
|
|
||||||
asm volatile ("mov %%edi, %0" : "=r" (regs->edi));
|
|
||||||
asm volatile ("mov %%gs, %0" : "=r" (regs->gs));
|
|
||||||
asm volatile ("mov %%fs, %0" : "=r" (regs->fs));
|
|
||||||
asm volatile ("mov %%es, %0" : "=r" (regs->es));
|
|
||||||
asm volatile ("mov %%ds, %0" : "=r" (regs->ds));
|
|
||||||
regs->eax = regs->ebx = regs->ecx = regs->edx = 0;
|
|
||||||
regs->eip = (uint32)func;
|
|
||||||
regs->useresp = t->StackUpperBase-0x4;
|
|
||||||
regs->esp = t->StackUpperBase - 40;
|
|
||||||
regs->ebp = t->Ebp = t->StackUpperBase;
|
|
||||||
|
|
||||||
// Add the task to the list
|
// Add the task to the list
|
||||||
Task* last = TaskList;
|
Task* last = TaskList;
|
||||||
@ -96,7 +101,6 @@ void TaskInitialize()
|
|||||||
|
|
||||||
t->Pid = NextPid++;
|
t->Pid = NextPid++;
|
||||||
t->Pd = KernelDirectory;
|
t->Pd = KernelDirectory;
|
||||||
t->Esp = t->Ebp = 0;
|
|
||||||
t->Next = NULL;
|
t->Next = NULL;
|
||||||
|
|
||||||
TaskList = CurrentTask = t;
|
TaskList = CurrentTask = t;
|
||||||
|
7
bash.exe.stackdump
Normal file
7
bash.exe.stackdump
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Exception: STATUS_ACCESS_VIOLATION at eip=6102048B
|
||||||
|
eax=00925C98 ebx=61243754 ecx=75907BBE edx=002F51F8 esi=00000000 edi=0022FA10
|
||||||
|
ebp=61020C00 esp=0022C7E0 program=C:\cygwin\bin\bash.exe, pid 2900, thread main
|
||||||
|
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
|
||||||
|
Stack trace:
|
||||||
|
Frame Function Args
|
||||||
|
End of stack trace
|
@ -1,6 +1,6 @@
|
|||||||
00000000000i[ ] Bochs x86 Emulator 2.4.6
|
00000000000i[ ] Bochs x86 Emulator 2.4.6
|
||||||
00000000000i[ ] Build from CVS snapshot, on February 22, 2011
|
00000000000i[ ] Build from CVS snapshot, on February 22, 2011
|
||||||
00000000000i[ ] Compiled at Feb 22 2011, 19:57:47
|
00000000000i[ ] Compiled at Feb 22 2011, 20:08:42
|
||||||
00000000000i[ ] System configuration
|
00000000000i[ ] System configuration
|
||||||
00000000000i[ ] processors: 1 (cores=1, HT threads=1)
|
00000000000i[ ] processors: 1 (cores=1, HT threads=1)
|
||||||
00000000000i[ ] A20 line support: yes
|
00000000000i[ ] A20 line support: yes
|
||||||
@ -30,13 +30,13 @@
|
|||||||
00000000000i[ ] SB16 support: yes
|
00000000000i[ ] SB16 support: yes
|
||||||
00000000000i[ ] USB support: yes
|
00000000000i[ ] USB support: yes
|
||||||
00000000000i[ ] VGA extension support: vbe cirrus
|
00000000000i[ ] VGA extension support: vbe cirrus
|
||||||
00000000000i[MEM0 ] allocated memory at 028C0020. after alignment, vector=028C1000
|
00000000000i[MEM0 ] allocated memory at 03C60020. after alignment, vector=03C61000
|
||||||
00000000000i[MEM0 ] 32.00MB
|
00000000000i[MEM0 ] 32.00MB
|
||||||
00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32
|
00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32
|
||||||
00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('C:\Program Files\Bochs-2.4.6\BIOS-bochs-latest')
|
00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('C:\Program Files\Bochs-2.4.6\BIOS-bochs-latest')
|
||||||
00000000000i[MEM0 ] rom at 0xc0000/40448 ('C:\Program Files\Bochs-2.4.6\VGABIOS-lgpl-latest')
|
00000000000i[MEM0 ] rom at 0xc0000/40448 ('C:\Program Files\Bochs-2.4.6\VGABIOS-lgpl-latest')
|
||||||
00000000000i[CMOS ] Using local time for initial clock
|
00000000000i[CMOS ] Using local time for initial clock
|
||||||
00000000000i[CMOS ] Setting initial clock to: Thu Sep 15 08:03:00 2011 (time0=1316062980)
|
00000000000i[CMOS ] Setting initial clock to: Tue Sep 20 12:05:43 2011 (time0=1316509543)
|
||||||
00000000000i[DMA ] channel 4 used by cascade
|
00000000000i[DMA ] channel 4 used by cascade
|
||||||
00000000000i[DMA ] channel 2 used by Floppy Drive
|
00000000000i[DMA ] channel 2 used by Floppy Drive
|
||||||
00000000000i[FDD ] fd0: 'a:' ro=0, h=2,t=80,spt=18
|
00000000000i[FDD ] fd0: 'a:' ro=0, h=2,t=80,spt=18
|
||||||
@ -54,6 +54,7 @@
|
|||||||
00000000000i[ ] init_dev of 'speaker' plugin device by virtual method
|
00000000000i[ ] init_dev of 'speaker' plugin device by virtual method
|
||||||
00000000000i[ ] init_dev of 'extfpuirq' plugin device by virtual method
|
00000000000i[ ] init_dev of 'extfpuirq' plugin device by virtual method
|
||||||
00000000000i[ ] init_dev of 'gameport' plugin device by virtual method
|
00000000000i[ ] init_dev of 'gameport' plugin device by virtual method
|
||||||
|
00000000000i[ ] init_dev of 'iodebug' plugin device by virtual method
|
||||||
00000000000i[ ] init_dev of 'pci_ide' plugin device by virtual method
|
00000000000i[ ] init_dev of 'pci_ide' plugin device by virtual method
|
||||||
00000000000i[PCI ] PIIX3 PCI IDE controller present at device 1, function 1
|
00000000000i[PCI ] PIIX3 PCI IDE controller present at device 1, function 1
|
||||||
00000000000i[ ] init_dev of 'acpi' plugin device by virtual method
|
00000000000i[ ] init_dev of 'acpi' plugin device by virtual method
|
||||||
@ -75,6 +76,7 @@
|
|||||||
00000000000i[ ] register state of 'speaker' plugin device by virtual method
|
00000000000i[ ] register state of 'speaker' plugin device by virtual method
|
||||||
00000000000i[ ] register state of 'extfpuirq' plugin device by virtual method
|
00000000000i[ ] register state of 'extfpuirq' plugin device by virtual method
|
||||||
00000000000i[ ] register state of 'gameport' plugin device by virtual method
|
00000000000i[ ] register state of 'gameport' plugin device by virtual method
|
||||||
|
00000000000i[ ] register state of 'iodebug' plugin device by virtual method
|
||||||
00000000000i[ ] register state of 'pci_ide' plugin device by virtual method
|
00000000000i[ ] register state of 'pci_ide' plugin device by virtual method
|
||||||
00000000000i[ ] register state of 'acpi' plugin device by virtual method
|
00000000000i[ ] register state of 'acpi' plugin device by virtual method
|
||||||
00000000000i[ ] register state of 'ioapic' plugin device by virtual method
|
00000000000i[ ] register state of 'ioapic' plugin device by virtual method
|
||||||
@ -104,6 +106,7 @@
|
|||||||
00000000000i[ ] reset of 'speaker' plugin device by virtual method
|
00000000000i[ ] reset of 'speaker' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'extfpuirq' plugin device by virtual method
|
00000000000i[ ] reset of 'extfpuirq' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'gameport' plugin device by virtual method
|
00000000000i[ ] reset of 'gameport' plugin device by virtual method
|
||||||
|
00000000000i[ ] reset of 'iodebug' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'pci_ide' plugin device by virtual method
|
00000000000i[ ] reset of 'pci_ide' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'acpi' plugin device by virtual method
|
00000000000i[ ] reset of 'acpi' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'ioapic' plugin device by virtual method
|
00000000000i[ ] reset of 'ioapic' plugin device by virtual method
|
||||||
@ -111,6 +114,7 @@
|
|||||||
00000000000i[ ] reset of 'harddrv' plugin device by virtual method
|
00000000000i[ ] reset of 'harddrv' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'serial' plugin device by virtual method
|
00000000000i[ ] reset of 'serial' plugin device by virtual method
|
||||||
00000000000i[ ] reset of 'parallel' plugin device by virtual method
|
00000000000i[ ] reset of 'parallel' plugin device by virtual method
|
||||||
|
00000000000i[ ] set SIGINT handler to bx_debug_ctrlc_handler
|
||||||
00000003305i[BIOS ] $Revision: 1.257 $ $Date: 2011/01/26 09:52:02 $
|
00000003305i[BIOS ] $Revision: 1.257 $ $Date: 2011/01/26 09:52:02 $
|
||||||
00000200000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8
|
00000200000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8
|
||||||
00000318042i[KBD ] reset-disable command received
|
00000318042i[KBD ] reset-disable command received
|
||||||
@ -156,142 +160,40 @@
|
|||||||
00023137418i[BIOS ] int13_harddisk: function 41, unmapped device for ELDL=80
|
00023137418i[BIOS ] int13_harddisk: function 41, unmapped device for ELDL=80
|
||||||
00023142199i[BIOS ] int13_harddisk: function 08, unmapped device for ELDL=80
|
00023142199i[BIOS ] int13_harddisk: function 08, unmapped device for ELDL=80
|
||||||
00023146850i[BIOS ] *** int 15h function AX=00c0, BX=0000 not yet supported!
|
00023146850i[BIOS ] *** int 15h function AX=00c0, BX=0000 not yet supported!
|
||||||
00044779044i[KBD ] setting typematic info
|
00044035593i[CPU0 ] [44035593] Stopped on MAGIC BREAKPOINT
|
||||||
00044779062i[KBD ] setting delay to 500 mS (unused)
|
00044142237i[CPU0 ] [44142237] Stopped on MAGIC BREAKPOINT
|
||||||
00044779062i[KBD ] setting repeat rate to 10.9 cps (unused)
|
00044779187i[KBD ] setting typematic info
|
||||||
00044779105i[KBD ] Switched to scancode set 2
|
00044779205i[KBD ] setting delay to 500 mS (unused)
|
||||||
00044779168i[KBD ] keyboard: scan convert turned off
|
00044779205i[KBD ] setting repeat rate to 10.9 cps (unused)
|
||||||
01114335114i[CPU0 ] CPU is in protected mode (active)
|
00044779248i[KBD ] Switched to scancode set 2
|
||||||
01114335114i[CPU0 ] CS.d_b = 32 bit
|
00044779311i[KBD ] keyboard: scan convert turned off
|
||||||
01114335114i[CPU0 ] SS.d_b = 32 bit
|
00044838196i[CPU0 ] [44838196] Stopped on MAGIC BREAKPOINT
|
||||||
01114335114i[CPU0 ] EFER = 0x00000000
|
00044838228i[ ] dbg: Quit
|
||||||
01114335114i[CPU0 ] | RAX=00000000c0081b54 RBX=0000000000000064
|
00044838228i[CPU0 ] CPU is in protected mode (active)
|
||||||
01114335114i[CPU0 ] | RCX=0000000001be729c RDX=0000000000000000
|
00044838228i[CPU0 ] CS.d_b = 32 bit
|
||||||
01114335114i[CPU0 ] | RSP=000000000000000c RBP=00000000c0081b54
|
00044838228i[CPU0 ] SS.d_b = 32 bit
|
||||||
01114335114i[CPU0 ] | RSI=000000000000000e RDI=0000000000000005
|
00044838228i[CPU0 ] EFER = 0x00000000
|
||||||
01114335114i[CPU0 ] | R8=0000000000000000 R9=0000000000000000
|
00044838228i[CPU0 ] | RAX=0000000000108f18 RBX=0000000000000064
|
||||||
01114335114i[CPU0 ] | R10=0000000000000000 R11=0000000000000000
|
00044838228i[CPU0 ] | RCX=0000000000111720 RDX=0000000000000014
|
||||||
01114335114i[CPU0 ] | R12=0000000000000000 R13=0000000000000000
|
00044838228i[CPU0 ] | RSP=0000000000111720 RBP=0000000000000014
|
||||||
01114335114i[CPU0 ] | R14=0000000000000000 R15=0000000000000000
|
00044838228i[CPU0 ] | RSI=0000000000111806 RDI=0000000000000002
|
||||||
01114335114i[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf zf af pf cf
|
00044838228i[CPU0 ] | R8=0000000000000000 R9=0000000000000000
|
||||||
01114335114i[CPU0 ] | SEG selector base limit G D
|
00044838228i[CPU0 ] | R10=0000000000000000 R11=0000000000000000
|
||||||
01114335114i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
|
00044838228i[CPU0 ] | R12=0000000000000000 R13=0000000000000000
|
||||||
01114335114i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 ffffffff 1 1
|
00044838228i[CPU0 ] | R14=0000000000000000 R15=0000000000000000
|
||||||
01114335114i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
00044838228i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
|
||||||
01114335114i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
00044838228i[CPU0 ] | SEG selector base limit G D
|
||||||
01114335114i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
00044838228i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
|
||||||
01114335114i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
00044838228i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 ffffffff 1 1
|
||||||
01114335114i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
00044838228i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
||||||
01114335114i[CPU0 ] | MSR_FS_BASE:0000000000000000
|
00044838228i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
||||||
01114335114i[CPU0 ] | MSR_GS_BASE:0000000000000000
|
00044838228i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
||||||
01114335114i[CPU0 ] | RIP=0000000000106882 (0000000000106882)
|
00044838228i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
||||||
01114335114i[CPU0 ] | CR0=0xe0000011 CR2=0x00000000fffffffc
|
00044838228i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
||||||
01114335114i[CPU0 ] | CR3=0x0011b000 CR4=0x00000000
|
00044838228i[CPU0 ] | MSR_FS_BASE:0000000000000000
|
||||||
01114335114i[CPU0 ] 0x0000000000106882>> pushad : 60
|
00044838228i[CPU0 ] | MSR_GS_BASE:0000000000000000
|
||||||
01114335114e[CPU0 ] exception(): 3rd (14) exception with no resolution, shutdown status is 00h, resetting
|
00044838228i[CPU0 ] | RIP=0000000000108f60 (0000000000108f60)
|
||||||
01114335114i[SYS ] bx_pc_system_c::Reset(HARDWARE) called
|
00044838228i[CPU0 ] | CR0=0xe0000011 CR2=0x0000000000000000
|
||||||
01114335114i[CPU0 ] cpu hardware reset
|
00044838228i[CPU0 ] | CR3=0x0011b000 CR4=0x00000000
|
||||||
01114335114i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000
|
00044838228i[CMOS ] Last time is 1316509554 (Tue Sep 20 12:05:54 2011)
|
||||||
01114335114i[CPU0 ] CPUID[0x00000000]: 00000003 756e6547 6c65746e 49656e69
|
00044838228i[CTRL ] quit_sim called with exit code 0
|
||||||
01114335114i[CPU0 ] CPUID[0x00000001]: 00000f23 00000800 00002000 07cbfbff
|
|
||||||
01114335114i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x00000003]: 00000000 00000000 00000000 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x00000004]: 00000000 00000000 00000000 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x00000007]: 00000000 00000000 00000000 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000001 2a100800
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000
|
|
||||||
01114335114i[CPU0 ] CPUID[0x80000008]: 00003028 00000000 00000000 00000000
|
|
||||||
01114335114i[ ] reset of 'unmapped' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'biosdev' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'speaker' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'extfpuirq' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'gameport' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'pci_ide' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'acpi' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'ioapic' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'keyboard' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'harddrv' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'serial' plugin device by virtual method
|
|
||||||
01114335114i[ ] reset of 'parallel' plugin device by virtual method
|
|
||||||
01114338420i[BIOS ] $Revision: 1.257 $ $Date: 2011/01/26 09:52:02 $
|
|
||||||
01114714063i[KBD ] reset-disable command received
|
|
||||||
01114840783i[VBIOS]
VGABios $Id: vgabios.c,v 1.69 2009/04/07 18:18:20 vruppert Exp $
|
|
||||||
01114840854i[CLVGA] VBE known Display Interface b0c0
|
|
||||||
01114840886i[CLVGA] VBE known Display Interface b0c5
|
|
||||||
01114843811i[VBIOS] VBE Bios $Id: vbe.c,v 1.62 2009/01/25 15:46:25 vruppert Exp $
|
|
||||||
01115156500i[BIOS ] Starting rombios32
|
|
||||||
01115156997i[BIOS ] Shutdown flag 0
|
|
||||||
01115157678i[BIOS ] ram_size=0x02000000
|
|
||||||
01115158156i[BIOS ] ram_end=32MB
|
|
||||||
01115198776i[BIOS ] Found 1 cpu(s)
|
|
||||||
01115217763i[BIOS ] bios_table_addr: 0x000fb928 end=0x000fcc00
|
|
||||||
01115217866i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush)
|
|
||||||
01115545563i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush)
|
|
||||||
01115873491i[P2I ] PCI IRQ routing: PIRQA# set to 0x0b
|
|
||||||
01115873512i[P2I ] PCI IRQ routing: PIRQB# set to 0x09
|
|
||||||
01115873533i[P2I ] PCI IRQ routing: PIRQC# set to 0x0b
|
|
||||||
01115873554i[P2I ] PCI IRQ routing: PIRQD# set to 0x09
|
|
||||||
01115873564i[P2I ] write: ELCR2 = 0x0a
|
|
||||||
01115874449i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a
|
|
||||||
01115882407i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600
|
|
||||||
01115884969i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601
|
|
||||||
01115887370i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101
|
|
||||||
01115888304i[BIOS ] region 4: 0x0000c000
|
|
||||||
01115890614i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680
|
|
||||||
01115890852i[ACPI ] new irq line = 11
|
|
||||||
01115890866i[ACPI ] new irq line = 9
|
|
||||||
01115890938i[PCI ] setting SMRAM control register to 0x4a
|
|
||||||
01116055032i[CPU0 ] Enter to System Management Mode
|
|
||||||
01116055042i[CPU0 ] RSM: Resuming from System Management Mode
|
|
||||||
01116219062i[PCI ] setting SMRAM control register to 0x0a
|
|
||||||
01116228233i[BIOS ] MP table addr=0x000fba00 MPC table addr=0x000fb930 size=0xd0
|
|
||||||
01116230292i[BIOS ] SMBIOS table addr=0x000fba10
|
|
||||||
01116232680i[BIOS ] ACPI tables: RSDP addr=0x000fbb30 ACPI DATA addr=0x01ff0000 size=0x988
|
|
||||||
01116235918i[BIOS ] Firmware waking vector 0x1ff00cc
|
|
||||||
01116247031i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush)
|
|
||||||
01116247875i[BIOS ] bios_table_cur_addr: 0x000fbb54
|
|
||||||
01128376669i[BIOS ] Booting from 0000:7c00
|
|
||||||
01137472539i[BIOS ] int13_harddisk: function 41, unmapped device for ELDL=80
|
|
||||||
01137477320i[BIOS ] int13_harddisk: function 08, unmapped device for ELDL=80
|
|
||||||
01137481971i[BIOS ] *** int 15h function AX=00c0, BX=0000 not yet supported!
|
|
||||||
01159114165i[KBD ] setting typematic info
|
|
||||||
01159114183i[KBD ] setting delay to 500 mS (unused)
|
|
||||||
01159114183i[KBD ] setting repeat rate to 10.9 cps (unused)
|
|
||||||
01159114226i[KBD ] Switched to scancode set 2
|
|
||||||
01159114289i[KBD ] keyboard: scan convert turned off
|
|
||||||
01470312000p[WGUI ] >>PANIC<< POWER button turned off.
|
|
||||||
01470312000i[CPU0 ] CPU is in protected mode (active)
|
|
||||||
01470312000i[CPU0 ] CS.d_b = 32 bit
|
|
||||||
01470312000i[CPU0 ] SS.d_b = 32 bit
|
|
||||||
01470312000i[CPU0 ] EFER = 0x00000000
|
|
||||||
01470312000i[CPU0 ] | RAX=00000000001118ff RBX=00000000001118c8
|
|
||||||
01470312000i[CPU0 ] | RCX=00000000000003d4 RDX=00000000001118c8
|
|
||||||
01470312000i[CPU0 ] | RSP=00000000001117c8 RBP=0000000000000014
|
|
||||||
01470312000i[CPU0 ] | RSI=0000000000111806 RDI=0000000000000002
|
|
||||||
01470312000i[CPU0 ] | R8=0000000000000000 R9=0000000000000000
|
|
||||||
01470312000i[CPU0 ] | R10=0000000000000000 R11=0000000000000000
|
|
||||||
01470312000i[CPU0 ] | R12=0000000000000000 R13=0000000000000000
|
|
||||||
01470312000i[CPU0 ] | R14=0000000000000000 R15=0000000000000000
|
|
||||||
01470312000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df IF tf sf ZF af PF cf
|
|
||||||
01470312000i[CPU0 ] | SEG selector base limit G D
|
|
||||||
01470312000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
|
|
||||||
01470312000i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 ffffffff 1 1
|
|
||||||
01470312000i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
|
||||||
01470312000i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
|
||||||
01470312000i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
|
||||||
01470312000i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
|
||||||
01470312000i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
|
|
||||||
01470312000i[CPU0 ] | MSR_FS_BASE:0000000000000000
|
|
||||||
01470312000i[CPU0 ] | MSR_GS_BASE:0000000000000000
|
|
||||||
01470312000i[CPU0 ] | RIP=0000000000108b8e (0000000000108b8e)
|
|
||||||
01470312000i[CPU0 ] | CR0=0xe0000011 CR2=0x0000000000000000
|
|
||||||
01470312000i[CPU0 ] | CR3=0x0011b000 CR4=0x00000000
|
|
||||||
01470312000i[CPU0 ] 0x0000000000108b8e>> mov al, byte ptr ds:0x10d9dd : A0DDD91000
|
|
||||||
01470312000i[CMOS ] Last time is 1316063346 (Thu Sep 15 08:09:06 2011)
|
|
||||||
01470312000i[ ] restoring default signal behavior
|
|
||||||
01470312000i[CTRL ] quit_sim called with exit code 1
|
|
||||||
|
20426
bochs/dump.txt
20426
bochs/dump.txt
File diff suppressed because it is too large
Load Diff
BIN
build/clock.o
BIN
build/clock.o
Binary file not shown.
BIN
build/console.o
BIN
build/console.o
Binary file not shown.
BIN
build/crash.o
BIN
build/crash.o
Binary file not shown.
BIN
build/logger.o
BIN
build/logger.o
Binary file not shown.
BIN
build/tasking-asm.o
Normal file
BIN
build/tasking-asm.o
Normal file
Binary file not shown.
Binary file not shown.
@ -1,7 +1,9 @@
|
|||||||
[????] BUILD 0.1.1.??? DATE 9/0?/2011 AT ?:?? ??
|
[????] BUILD 0.1.1.50 DATE 9/20/2011 AT 12:43 PM
|
||||||
====================================================
|
====================================================
|
||||||
Mainly changed: Tasking
|
Mainly changed: Tasking
|
||||||
+ Implemented multitasking
|
+ Implemented multitasking
|
||||||
|
+ Switching works
|
||||||
|
? TODO: Fix other not working tasking routines
|
||||||
|
|
||||||
[GOOD] BUILD 0.1.0.629 DATE 9/08/2011 AT 5:20 PM
|
[GOOD] BUILD 0.1.0.629 DATE 9/08/2011 AT 5:20 PM
|
||||||
====================================================
|
====================================================
|
||||||
|
@ -13,3 +13,6 @@ Kernel/hal/cpu/isrs-asm.asm
|
|||||||
HAL :: Interrupt Requests assembly module
|
HAL :: Interrupt Requests assembly module
|
||||||
Kernel/hal/cpu/irq-asm.asm
|
Kernel/hal/cpu/irq-asm.asm
|
||||||
|
|
||||||
|
Tasking :: Assembly module
|
||||||
|
Kernel/tasking/tasking-asm.asm
|
||||||
|
|
||||||
|
BIN
kernel.bin
BIN
kernel.bin
Binary file not shown.
@ -1 +1 @@
|
|||||||
19
|
50
|
||||||
|
Loading…
Reference in New Issue
Block a user