From bcec94a11bf71fc7db9ca475c0e9e09c5cbe5479 Mon Sep 17 00:00:00 2001 From: NicJA Date: Mon, 18 May 2015 14:02:13 +0000 Subject: [PATCH] use IntETask() instead of GetIntETask(). minor debug changes/delint. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@50707 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- arch/arm-native/exec/exec_idle.c | 18 ++++++++++++++---- arch/arm-native/kernel/kernel_cpu.c | 14 +++++++------- arch/arm-native/kernel/kernel_execsmp.c | 4 ++++ arch/arm-native/kernel/kernel_scheduler.c | 2 +- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/arch/arm-native/exec/exec_idle.c b/arch/arm-native/exec/exec_idle.c index 4d882713c6..1f989ee6e5 100644 --- a/arch/arm-native/exec/exec_idle.c +++ b/arch/arm-native/exec/exec_idle.c @@ -1,24 +1,34 @@ /* - Copyright © 1995-2014, The AROS Development Team. All rights reserved. + Copyright © 1995-2015, The AROS Development Team. All rights reserved. $Id$ */ +#define DEBUG 0 + #include #include "exec_intern.h" #include "kernel_intern.h" #include "kernel_cpu.h" #include "kernel_syscall.h" +#include "etask.h" + void IdleTask(struct ExecBase *SysBase) { - D(bug("[Kernel] Idle task started up\n")); +#if defined(DEBUG) + struct Task *thisTask = FindTask(NULL); + int cpunum = GetCPUNumber(); +#endif + + D(bug("[IDLE:%02d] %s started up\n", cpunum, thisTask->tc_Node.ln_Name)); asm volatile ("swi %[swi_no]" : : [swi_no] "I" (SC_SUPERSTATE) : "lr"); asm volatile ("swi %[swi_no]" : : [swi_no] "I" (SC_STI) : "lr"); do - { /* forever */ - D(bug("[IDLE] Nothing to do ..\n")); + { + /* forever */ + D(bug("[IDLE:%02d] CPU has idled for %d seconds..\n", GetIntETask(thisTask)->iet_CpuTime.tv_secs)); asm volatile("mov r0, #0\n\t mcr p15, 0, r0, c7, c0, 4":::"r0"); } while(1); } diff --git a/arch/arm-native/kernel/kernel_cpu.c b/arch/arm-native/kernel/kernel_cpu.c index fa7130c4ec..6f75229c71 100644 --- a/arch/arm-native/kernel/kernel_cpu.c +++ b/arch/arm-native/kernel/kernel_cpu.c @@ -269,11 +269,11 @@ void cpu_Switch(regs_t *regs) if (__arm_arosintern.ARMI_GetTime) { /* Update the taks CPU time .. */ - timeCur = __arm_arosintern.ARMI_GetTime() - GetIntETask(task)->iet_private1; + timeCur = __arm_arosintern.ARMI_GetTime() - IntETask(task->tc_UnionETask.tc_ETask)->iet_private1; timeVal.tv_secs = timeCur / 1000000; timeVal.tv_micro = timeCur % 1000000; - ADDTIME(&GetIntETask(task)->iet_CpuTime, &timeVal); + ADDTIME(&IntETask(task->tc_UnionETask.tc_ETask)->iet_CpuTime, &timeVal); } core_Switch(); @@ -313,17 +313,17 @@ void cpu_Dispatch(regs_t *regs) Exception(); #if defined(__AROSEXEC_SMP__) - GetIntETask(task)->iet_CpuNumber = cpunum; + IntETask(task->tc_UnionETask.tc_ETask)->iet_CpuNumber = cpunum; #endif if (__arm_arosintern.ARMI_GetTime) { /* Store the launch time */ - GetIntETask(task)->iet_private1 = __arm_arosintern.ARMI_GetTime(); - if (!GetIntETask(task)->iet_StartTime.tv_secs && !GetIntETask(task)->iet_StartTime.tv_micro) + IntETask(task->tc_UnionETask.tc_ETask)->iet_private1 = __arm_arosintern.ARMI_GetTime(); + if (!IntETask(task->tc_UnionETask.tc_ETask)->iet_StartTime.tv_secs && !IntETask(task->tc_UnionETask.tc_ETask)->iet_StartTime.tv_micro) { - GetIntETask(task)->iet_StartTime.tv_secs = GetIntETask(task)->iet_private1 / 1000000; - GetIntETask(task)->iet_StartTime.tv_micro = GetIntETask(task)->iet_private1 % 1000000; + IntETask(task->tc_UnionETask.tc_ETask)->iet_StartTime.tv_secs = IntETask(task->tc_UnionETask.tc_ETask)->iet_private1 / 1000000; + IntETask(task->tc_UnionETask.tc_ETask)->iet_StartTime.tv_micro = IntETask(task->tc_UnionETask.tc_ETask)->iet_private1 % 1000000; } } diff --git a/arch/arm-native/kernel/kernel_execsmp.c b/arch/arm-native/kernel/kernel_execsmp.c index 950e682568..8ed0b3dfc7 100644 --- a/arch/arm-native/kernel/kernel_execsmp.c +++ b/arch/arm-native/kernel/kernel_execsmp.c @@ -96,6 +96,10 @@ struct Task *cpu_InitBootStrap(struct ExecBase *SysBase) IntETask(bstask->tc_UnionETask.tc_ETask)->iet_CpuNumber = cpunum; IntETask(bstask->tc_UnionETask.tc_ETask)->iet_CpuAffinity = (1 << cpunum); + bsctx->r[11] = 0; + bsctx->lr = SysBase->TaskExitCode; + bsctx->Flags = 0; + return bstask; #undef bstask } diff --git a/arch/arm-native/kernel/kernel_scheduler.c b/arch/arm-native/kernel/kernel_scheduler.c index f9c5dcbb82..55bada7778 100644 --- a/arch/arm-native/kernel/kernel_scheduler.c +++ b/arch/arm-native/kernel/kernel_scheduler.c @@ -177,7 +177,7 @@ struct Task *core_Dispatch(void) for (newtask = (struct Task *)GetHead(&SysBase->TaskReady); newtask != NULL; newtask = (struct Task *)GetSucc(newtask)) { #if defined(__AROSEXEC_SMP__) - if ((GetIntETask(newtask)->iet_CpuAffinity & cpumask) == cpumask) + if ((GetIntETask(newtask)->iet_CpuAffinity & cpumask) == cpumask) { #endif Remove(&newtask->tc_Node); -- 2.11.4.GIT