@@ -178,3 +178,37 @@ deep_wfi:
178178 msr SYS_IMP_APL_CYC_OVRD, x0
179179
180180 ret
181+
182+ .globl cpu_sleep
183+ .type cpu_sleep, @function
184+ cpu_sleep:
185+ mrs x1, SYS_IMP_APL_CYC_OVRD
186+ and x1, x1, #~CYC_OVRD_IRQ_MODE_MASK
187+ orr x1, x1, #CYC_OVRD_IRQ_MODE(2 )
188+ and x1, x1, #~CYC_OVRD_FIQ_MODE_MASK
189+ orr x1, x1, #CYC_OVRD_FIQ_MODE(2 )
190+ msr SYS_IMP_APL_CYC_OVRD, x1
191+
192+ cmp x0, #0
193+ beq 1f
194+
195+ mrs x1, SYS_IMP_APL_ACC_OVRD
196+ orr x1, x1, #ACC_OVRD_PWR_DN_SRM(3 )
197+ and x1, x1, #~ACC_OVRD_DIS_L2_FLUSH_ACC_SLEEP_MASK
198+ orr x1, x1, #ACC_OVRD_DIS_L2_FLUSH_ACC_SLEEP(2 )
199+ orr x1, x1, #ACC_OVRD_TRAIN_DOWN_LINK(3 )
200+ orr x1, x1, #ACC_OVRD_POWER_DOWN_CPM(3 )
201+ orr x1, x1, #ACC_OVRD_DISABLE_PIO_ON_WFI_CPU
202+ orr x1, x1, #ACC_OVRD_DEEP_SLEEP
203+ msr SYS_IMP_APL_ACC_OVRD, x1
204+ 1 :
205+
206+ mrs x1, SYS_IMP_APL_CYC_OVRD
207+ orr x1, x1, #CYC_OVRD_WFI_MODE(3 )
208+ orr x1, x1, #CYC_OVRD_DISABLE_WFI_RET
209+ msr SYS_IMP_APL_CYC_OVRD, x1
210+
211+ 2 :
212+ isb
213+ wfi
214+ b 2b
0 commit comments