diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-09-14 01:42:29 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-09-14 01:45:55 -0700 |
commit | 46bb1d3157f9ad575c83a4bfa1e32b0d21bc8546 (patch) | |
tree | 28918f653d7cf970d33d5592047ef663289aca40 /kernel.soso/task.asm | |
parent | ded2b24ce28f4a9df75ce40117f0f06f09574369 (diff) | |
download | mu-46bb1d3157f9ad575c83a4bfa1e32b0d21bc8546.tar.gz |
5650 - support a second OS: soso
https://github.com/ozkl/soso + Much smaller than Linux; builds instantly + Supports graphics - No network support - Doesn't work on a cloud server (yet?)
Diffstat (limited to 'kernel.soso/task.asm')
-rw-r--r-- | kernel.soso/task.asm | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/kernel.soso/task.asm b/kernel.soso/task.asm new file mode 100644 index 00000000..f0f2b464 --- /dev/null +++ b/kernel.soso/task.asm @@ -0,0 +1,39 @@ +global switchTask + +switchTask: + mov esi, [esp] + pop eax ; *current thread + + ; get values from thread->regs structure + + push dword [esi+4] ; eax + push dword [esi+8] ; ecx + push dword [esi+12] ; edx + push dword [esi+16] ; ebx + push dword [esi+24] ; ebp + push dword [esi+28] ; esi + push dword [esi+32] ; edi + push dword [esi+48] ; ds + push dword [esi+50] ; es + push dword [esi+52] ; fs + push dword [esi+54] ; gs + + mov al, 0x20 + out 0x20, al + + mov eax, [esi+56] + mov cr3, eax + + pop gs + pop fs + pop es + pop ds + pop edi + pop esi + pop ebp + pop ebx + pop edx + pop ecx + pop eax + + iret |