X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Kernel%2Farch%2Fx86_64%2Fproc.c;h=623de556745e8779d486ae916bd686c78ff64223;hb=ebaeb7ad41f633762d26f759852498fcb7d3dfea;hp=038cc6129b2fe96eadf8b8ea0f3625887c12b78e;hpb=9f407c493c33928e0f19b834699d9694036ca42e;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/proc.c b/Kernel/arch/x86_64/proc.c index 038cc612..623de556 100644 --- a/Kernel/arch/x86_64/proc.c +++ b/Kernel/arch/x86_64/proc.c @@ -36,9 +36,10 @@ extern tThread *gActiveThreads; extern tThread *gSleepingThreads; extern tThread *gDeleteThreads; extern tThread *Threads_GetNextToRun(int CPU); -extern void Threads_Dump(); +extern void Threads_Dump(void); extern tThread *Threads_CloneTCB(Uint *Err, Uint Flags); -extern void Proc_ReturnToUser(); +extern void Proc_ReturnToUser(void); +extern void GetCPUNum(void); // === PROTOTYPES === void ArchThreads_Init(); @@ -268,6 +269,7 @@ void ArchThreads_Init() #else pos = 0; #endif + gTSSs[pos].CPUNumber = pos; gTSSs[pos].RSP0 = 0; // Set properly by scheduler gGDT[6+pos*2].BaseLow = ((Uint)(&gTSSs[pos])) & 0xFFFF; gGDT[6+pos*2].BaseMid = ((Uint)(&gTSSs[pos])) >> 16; @@ -347,7 +349,8 @@ void Proc_Start() tThread *Proc_GetCurThread() { #if USE_MP - return gaCPUs[ gaAPIC_to_CPU[gpMP_LocalAPIC->ID.Val&0xFF] ].Current; + //return gaCPUs[ gaAPIC_to_CPU[gpMP_LocalAPIC->ID.Val&0xFF] ].Current; + return gaCPUs[ GetCPUNum() ].Current; #else return gCurrentThread; #endif