summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/system-pp502x.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/firmware/target/arm/system-pp502x.c b/firmware/target/arm/system-pp502x.c
index e77349d2e3..390c80d9fd 100644
--- a/firmware/target/arm/system-pp502x.c
+++ b/firmware/target/arm/system-pp502x.c
@@ -144,22 +144,19 @@ void scale_suspend_core(bool suspend) ICODE_ATTR;
144void scale_suspend_core(bool suspend) 144void scale_suspend_core(bool suspend)
145{ 145{
146 unsigned int core = CURRENT_CORE; 146 unsigned int core = CURRENT_CORE;
147 unsigned int othercore = 1 - core; 147 IF_COP( unsigned int othercore = 1 - core; )
148 static unsigned long proc_bits IBSS_ATTR;
149 static int oldstatus IBSS_ATTR; 148 static int oldstatus IBSS_ATTR;
150 149
151 if (suspend) 150 if (suspend)
152 { 151 {
153 oldstatus = set_interrupt_status(IRQ_FIQ_DISABLED, IRQ_FIQ_STATUS); 152 oldstatus = set_interrupt_status(IRQ_FIQ_DISABLED, IRQ_FIQ_STATUS);
154 proc_bits = PROC_CTL(othercore) & 0xc0000000; 153 IF_COP( PROC_CTL(othercore) = 0x40000000; nop; )
155 PROC_CTL(othercore) = 0x40000000; nop;
156 PROC_CTL(core) = 0x48000003; nop; 154 PROC_CTL(core) = 0x48000003; nop;
157 } 155 }
158 else 156 else
159 { 157 {
160 PROC_CTL(core) = 0x4800001f; nop; 158 PROC_CTL(core) = 0x4800001f; nop;
161 if (proc_bits == 0) 159 IF_COP( PROC_CTL(othercore) = 0x00000000; nop; )
162 PROC_CTL(othercore) = 0;
163 set_interrupt_status(oldstatus, IRQ_FIQ_STATUS); 160 set_interrupt_status(oldstatus, IRQ_FIQ_STATUS);
164 } 161 }
165} 162}