diff options
Diffstat (limited to 'firmware/target/arm/system-pp502x.c')
-rw-r--r-- | firmware/target/arm/system-pp502x.c | 9 |
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; | |||
144 | void scale_suspend_core(bool suspend) | 144 | void 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 | } |