#include <config.h>
#include <object.h>
#include <machine.h>
#include <arch/model/statedata.h>
#include <arch/kernel/vspace.h>
#include <arch/kernel/thread.h>
#include <arch/linker.h>
void
Arch_switchToThread(tcb_t *tcb)
{
setVMRoot(tcb);
#if defined(CONFIG_IPC_BUF_GLOBALS_FRAME)
*armKSGlobalsFrame = tcb->tcbIPCBuffer;
#elif defined(CONFIG_IPC_BUF_TPIDRURW)
#else
#error "Unknown IPC buffer strategy"
#endif
clearExMonitor();
}
BOOT_CODE void
Arch_configureIdleThread(tcb_t *tcb)
{
setRegister(tcb, CPSR, CPSR_IDLETHREAD);
setRegister(tcb, LR_svc, (word_t)idleThreadStart);
}
void
Arch_switchToIdleThread(void)
{
if (config_set(CONFIG_ARM_HYPERVISOR_SUPPORT)) {
vcpu_switch(NULL);
}
#ifdef CONFIG_IPC_BUF_GLOBALS_FRAME
*armKSGlobalsFrame = 0;
#endif
}
void
Arch_activateIdleThread(tcb_t *tcb)
{
}