2 Copyright © 1995-2015, The AROS Development Team. All rights reserved.
8 #include <proto/exec.h>
9 #include "exec_intern.h"
10 #include "kernel_intern.h"
11 #include "kernel_cpu.h"
12 #include "kernel_syscall.h"
16 void IdleTask(struct ExecBase
*SysBase
)
19 struct Task
*thisTask
= FindTask(NULL
);
21 register int tmp
asm("r0");
22 asm volatile ("swi %[swi_no]" : "=r"(tmp
) : [swi_no
] "I" (SC_GETCPUNUMBER
) : "lr");
26 D(bug("[IDLE:%02d] %s started up\n", cpunum
, thisTask
->tc_Node
.ln_Name
));
28 asm volatile ("swi %[swi_no]" : : [swi_no
] "I" (SC_SUPERSTATE
) : "lr");
29 asm volatile ("swi %[swi_no]" : : [swi_no
] "I" (SC_STI
) : "lr");
34 D(bug("[IDLE:%02d] CPU has idled for %d seconds..\n", cpunum
, GetIntETask(thisTask
)->iet_CpuTime
.tv_secs
));
35 asm volatile("mov r0, #0\n\t mcr p15, 0, r0, c7, c0, 4":::"r0");