]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - kernel/arch/x86/thread.cc
update
[polintos/scott/priv.git] / kernel / arch / x86 / thread.cc
index d7e445c5e65fffa933019c6434765c6de86bdcd2..f969a96b9adfea44e79a8c33b80d7fcbdc3275bd 100644 (file)
@@ -28,13 +28,13 @@ namespace Arch {
        {
                u32 dummy1, dummy2;
                
-               if (dest->addr_space) {
-                       assert(dest->addr_space == dest->active_addr_space);
+               if (dest->aspace) {
+                       assert(dest->aspace == dest->active_aspace);
                
-                       if (dest->addr_space != src->active_addr_space)
-                               set_aspace(dest->addr_space);
+                       if (dest->aspace != src->active_aspace)
+                               set_aspace(dest->aspace);
                } else {
-                       dest->active_addr_space = src->active_addr_space;
+                       dest->active_aspace = src->active_aspace;
                }
                
                Priv::tss.esp0 = reinterpret_cast<u32>(dest);
@@ -51,4 +51,17 @@ namespace Arch {
                             "0" (&src->arch.esp), "1" (&dest->arch.esp) :
                             "ebx", "edx", "esi", "edi", "memory");
        }
+
+       void ArchThread::init(void *entry, void *arg1, void *arg2)
+       {
+               void **stack = reinterpret_cast<void **>(this);
+               
+               *--stack = arg2;
+               *--stack = arg1;
+               *--stack = entry;
+               
+               esp = stack;
+               ebp = 0;
+               jump_to_init = 1;
+       }
 }