[????] 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:
Tiberiu Chibici 2021-09-14 18:58:06 +03:00
parent 581c6b92fe
commit 17342b6665
22 changed files with 10331 additions and 10385 deletions

View 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

View File

@ -118,3 +118,9 @@ int32 LogWrite (uint8 error, string device, string format, ...)
ConsoleCursorUpdateHardware();
return i;
}
void LogAssert (int32 condition, string file, int32 line)
{
if (!condition)
Panic("Assert", "Assertion failed in file %s line %d.\n", file, line);
}

View File

@ -6,9 +6,9 @@
volatile TimeSystem _internal_time;
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;
@ -19,5 +19,5 @@ void TimeHandler(_RegsStack32* UNUSED(r))
_internal_time.Time-=MILISECONDS_IN_DAY;
}
TaskSwitch();
TaskSwitch(r);
}

View File

@ -70,8 +70,8 @@ void CrashMessage(_RegsStack32 *r)
ConsoleCursorGoto(c); ConsoleWrite("eflags=0x%x", r->eflags);
ConsoleCursorGoto(d); ConsoleWrite("useresp=0x%x\n", r->useresp);
ConsoleCursorGoto(a); ConsoleWrite("gs=0x%x", r->ss);
ConsoleCursorGoto(b); ConsoleWrite("fs=0x%x", r->int_no);
ConsoleCursorGoto(a); ConsoleWrite("ss=0x%x", r->ss);
ConsoleCursorGoto(b); ConsoleWrite("int_no=0x%x", r->int_no);
ConsoleCursorGoto(c); ConsoleWrite("err_code=0x%x", r->err_code);
// Useful info about page fault

View File

@ -65,10 +65,12 @@ extern void ConsoleMain();
// External test routines
extern void SystemPanic();
extern int32 LogWrite (uint8 error, string device, string format, ...);
extern void LogAssert (int32 condition, string file, int32 line);
// Debug print
#define Log(dev, ...) { LogWrite(0, dev, __VA_ARGS__); }
#define Error(dev, ...) { LogWrite(1, dev, __VA_ARGS__); }
#define Panic(dev, ...) { LogWrite(1, dev, __VA_ARGS__); SystemPanic(); }
#define Assert(c) { LogAssert(c, __FILE__, __LINE__); }
#endif

View File

@ -13,10 +13,11 @@
typedef struct _Task {
uint32 Pid;
uint32 Esp, Ebp; // Stack
uint32 Eip, Esp, Ebp;
PageDirectory* Pd;
uint32 StackLowerBase;
uint32 StackUpperBase;
uint8 Initialized;
struct _Task* Next;
} Task;

View File

@ -1 +1 @@
#define OS_BUILD "0.1.1.19"
#define OS_BUILD "0.1.1.50"

View File

@ -0,0 +1,7 @@
; tasking.asm
bits 32
global TaskReadEip
TaskReadEip:
pop eax
jmp eax

View File

@ -7,27 +7,41 @@
#include <tasking.h>
#include <memory-add.h>
#include <stdio.h>
Task* TaskList;
Task* CurrentTask;
uint32 NextPid = 1;
void TaskSwitch ()
void TaskSwitch (_RegsStack32* regs)
{
MagicBreakpoint();
if (!TaskList) return;
uint32 eip = TaskReadEip();
if (eip == 0xABCDEF) return;
// Save context
asm volatile ("mov %%esp, %0" : "=r"(CurrentTask->Esp)); // Stack pointer
asm volatile ("mov %%ebp, %0" : "=r"(CurrentTask->Ebp)); // Base pointer
CurrentTask->Pd = CurrentDirectory;
asm volatile ("mov %%esp, %0" : "=r"(CurrentTask->Esp));
asm volatile ("mov %%ebp, %0" : "=r"(CurrentTask->Ebp));
CurrentTask->Eip = eip;
// Next task
CurrentTask = (!CurrentTask->Next) ? TaskList : CurrentTask->Next ;
// Switch context
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
@ -64,25 +78,16 @@ void TaskCreate (void (*func)())
t->Pid = NextPid++;
// Set up stack
*(uint32 *) (t->StackUpperBase - 0x4) = (uint32) TaskEnd; // Fallback function
t->Ebp = (uint32) t->StackUpperBase;
/*memset(&t->Regs, 0, sizeof(_RegsStack32));
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));
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;
// Read eflags
asm volatile ("pushf; pop %0" : "=r"(t->Regs.eflags));*/
// Add the task to the list
Task* last = TaskList;
@ -96,7 +101,6 @@ void TaskInitialize()
t->Pid = NextPid++;
t->Pd = KernelDirectory;
t->Esp = t->Ebp = 0;
t->Next = NULL;
TaskList = CurrentTask = t;

7
bash.exe.stackdump Normal file
View 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

View File

@ -1,6 +1,6 @@
00000000000i[ ] Bochs x86 Emulator 2.4.6
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[ ] processors: 1 (cores=1, HT threads=1)
00000000000i[ ] A20 line support: yes
@ -30,13 +30,13 @@
00000000000i[ ] SB16 support: yes
00000000000i[ ] USB support: yes
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 ] 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 0xc0000/40448 ('C:\Program Files\Bochs-2.4.6\VGABIOS-lgpl-latest')
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 2 used by Floppy Drive
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 'extfpuirq' 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[PCI ] PIIX3 PCI IDE controller present at device 1, function 1
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 'extfpuirq' 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 'acpi' 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 'extfpuirq' 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 'acpi' 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 'serial' 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 $
00000200000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8
00000318042i[KBD ] reset-disable command received
@ -156,142 +160,40 @@
00023137418i[BIOS ] int13_harddisk: function 41, 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!
00044779044i[KBD ] setting typematic info
00044779062i[KBD ] setting delay to 500 mS (unused)
00044779062i[KBD ] setting repeat rate to 10.9 cps (unused)
00044779105i[KBD ] Switched to scancode set 2
00044779168i[KBD ] keyboard: scan convert turned off
01114335114i[CPU0 ] CPU is in protected mode (active)
01114335114i[CPU0 ] CS.d_b = 32 bit
01114335114i[CPU0 ] SS.d_b = 32 bit
01114335114i[CPU0 ] EFER = 0x00000000
01114335114i[CPU0 ] | RAX=00000000c0081b54 RBX=0000000000000064
01114335114i[CPU0 ] | RCX=0000000001be729c RDX=0000000000000000
01114335114i[CPU0 ] | RSP=000000000000000c RBP=00000000c0081b54
01114335114i[CPU0 ] | RSI=000000000000000e RDI=0000000000000005
01114335114i[CPU0 ] | R8=0000000000000000 R9=0000000000000000
01114335114i[CPU0 ] | R10=0000000000000000 R11=0000000000000000
01114335114i[CPU0 ] | R12=0000000000000000 R13=0000000000000000
01114335114i[CPU0 ] | R14=0000000000000000 R15=0000000000000000
01114335114i[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf zf af pf cf
01114335114i[CPU0 ] | SEG selector base limit G D
01114335114i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
01114335114i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 ffffffff 1 1
01114335114i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
01114335114i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
01114335114i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 ffffffff 1 1
01114335114i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
01114335114i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
01114335114i[CPU0 ] | MSR_FS_BASE:0000000000000000
01114335114i[CPU0 ] | MSR_GS_BASE:0000000000000000
01114335114i[CPU0 ] | RIP=0000000000106882 (0000000000106882)
01114335114i[CPU0 ] | CR0=0xe0000011 CR2=0x00000000fffffffc
01114335114i[CPU0 ] | CR3=0x0011b000 CR4=0x00000000
01114335114i[CPU0 ] 0x0000000000106882>> pushad : 60
01114335114e[CPU0 ] exception(): 3rd (14) exception with no resolution, shutdown status is 00h, resetting
01114335114i[SYS ] bx_pc_system_c::Reset(HARDWARE) called
01114335114i[CPU0 ] cpu hardware reset
01114335114i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000
01114335114i[CPU0 ] CPUID[0x00000000]: 00000003 756e6547 6c65746e 49656e69
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
00044035593i[CPU0 ] [44035593] Stopped on MAGIC BREAKPOINT
00044142237i[CPU0 ] [44142237] Stopped on MAGIC BREAKPOINT
00044779187i[KBD ] setting typematic info
00044779205i[KBD ] setting delay to 500 mS (unused)
00044779205i[KBD ] setting repeat rate to 10.9 cps (unused)
00044779248i[KBD ] Switched to scancode set 2
00044779311i[KBD ] keyboard: scan convert turned off
00044838196i[CPU0 ] [44838196] Stopped on MAGIC BREAKPOINT
00044838228i[ ] dbg: Quit
00044838228i[CPU0 ] CPU is in protected mode (active)
00044838228i[CPU0 ] CS.d_b = 32 bit
00044838228i[CPU0 ] SS.d_b = 32 bit
00044838228i[CPU0 ] EFER = 0x00000000
00044838228i[CPU0 ] | RAX=0000000000108f18 RBX=0000000000000064
00044838228i[CPU0 ] | RCX=0000000000111720 RDX=0000000000000014
00044838228i[CPU0 ] | RSP=0000000000111720 RBP=0000000000000014
00044838228i[CPU0 ] | RSI=0000000000111806 RDI=0000000000000002
00044838228i[CPU0 ] | R8=0000000000000000 R9=0000000000000000
00044838228i[CPU0 ] | R10=0000000000000000 R11=0000000000000000
00044838228i[CPU0 ] | R12=0000000000000000 R13=0000000000000000
00044838228i[CPU0 ] | R14=0000000000000000 R15=0000000000000000
00044838228i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
00044838228i[CPU0 ] | SEG selector base limit G D
00044838228i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
00044838228i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 ffffffff 1 1
00044838228i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
00044838228i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
00044838228i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 ffffffff 1 1
00044838228i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
00044838228i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1
00044838228i[CPU0 ] | MSR_FS_BASE:0000000000000000
00044838228i[CPU0 ] | MSR_GS_BASE:0000000000000000
00044838228i[CPU0 ] | RIP=0000000000108f60 (0000000000108f60)
00044838228i[CPU0 ] | CR0=0xe0000011 CR2=0x0000000000000000
00044838228i[CPU0 ] | CR3=0x0011b000 CR4=0x00000000
00044838228i[CMOS ] Last time is 1316509554 (Tue Sep 20 12:05:54 2011)
00044838228i[CTRL ] quit_sim called with exit code 0

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
build/tasking-asm.o Normal file

Binary file not shown.

Binary file not shown.

View File

@ -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
+ 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
====================================================

View File

@ -13,3 +13,6 @@ Kernel/hal/cpu/isrs-asm.asm
HAL :: Interrupt Requests assembly module
Kernel/hal/cpu/irq-asm.asm
Tasking :: Assembly module
Kernel/tasking/tasking-asm.asm

Binary file not shown.

View File

@ -1 +1 @@
19
50