Commit 64f42cec authored by Vineet Gupta's avatar Vineet Gupta

ARC: create cpu specific version of arch_cpu_idle()

This paves way for creating a 3rd variant needed for NPS ARC700 without
littering ifdey'ery all over the place
Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
parent 1112c3b2
...@@ -47,9 +47,6 @@ ...@@ -47,9 +47,6 @@
#define ISA_INIT_STATUS_BITS (STATUS_IE_MASK | STATUS_AD_MASK | \ #define ISA_INIT_STATUS_BITS (STATUS_IE_MASK | STATUS_AD_MASK | \
(ARCV2_IRQ_DEF_PRIO << 1)) (ARCV2_IRQ_DEF_PRIO << 1))
/* SLEEP needs default irq priority (<=) which can interrupt the doze */
#define ISA_SLEEP_ARG (0x10 | ARCV2_IRQ_DEF_PRIO)
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/* /*
......
...@@ -43,8 +43,6 @@ ...@@ -43,8 +43,6 @@
#define ISA_INIT_STATUS_BITS STATUS_IE_MASK #define ISA_INIT_STATUS_BITS STATUS_IE_MASK
#define ISA_SLEEP_ARG 0x3
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/****************************************************************** /******************************************************************
......
...@@ -79,15 +79,29 @@ SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new) ...@@ -79,15 +79,29 @@ SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new)
return uval; return uval;
} }
#ifdef CONFIG_ISA_ARCV2
void arch_cpu_idle(void) void arch_cpu_idle(void)
{ {
/* sleep, but enable all interrupts before committing */ /* Re-enable interrupts <= default irq priority before commiting SLEEP */
const unsigned int arg = 0x10 | ARCV2_IRQ_DEF_PRIO;
__asm__ __volatile__( __asm__ __volatile__(
"sleep %0 \n" "sleep %0 \n"
: :
:"I"(ISA_SLEEP_ARG)); /* can't be "r" has to be embedded const */ :"I"(arg)); /* can't be "r" has to be embedded const */
}
#else
void arch_cpu_idle(void)
{
/* sleep, but enable both set E1/E2 (levels of interrutps) before committing */
__asm__ __volatile__("sleep 0x3 \n");
} }
#endif
asmlinkage void ret_from_fork(void); asmlinkage void ret_from_fork(void);
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment