RSEG CODE:CODE(2) PUBLIC ExecuteIMB ExecuteIMB: STR LR, [SP, #-0x04]! MRS R2, CPSR // Переключаемся в системный режим #ifdef NEWSGOLD SWI 0x04 #else SWI 0x00 #endif // Запрещаем прерывания MRS R1, CPSR ORR R1, R1,#0xC0 MSR CPSR_c, R1 NOP NOP NOP // Выполняем необходимые требования с кешем clean_loop: // clean entire dcache using test and clean MRC p15, 0, r15, c7, c10, 3 NOP NOP NOP BNE clean_loop MOV R0, #0x00 // drain write buffer MCR p15, 0, r0, c7, c10, 4 NOP NOP NOP NOP // invalidate icache MCR p15, 0, r0, c7, c5, 0 NOP NOP NOP NOP // Выходим // Восстанавливаем старый режим MSR CPSR_c,R2 LDR PC,[SP], #+0x04 END