То есть я пишу под телефон (Sie CX75 процеccор ARM926EJ-S), в нём уже есть прошивочные ф-ии (которые он использует для инициализации MMU) по этому поводу:
(Вроде верно нашёл)
MMU_enable
0000:A0B183A0 10 40 2D E9 STMFD SP!, {R4,LR}
0000:A0B183A4 E9 0A DC EB BL disable_INT
0000:A0B183A8 00 40 A0 E1 MOV R4, R0
0000:A0B183AC 53 0B DC EB BL getCP15_register_1
0000:A0B183B0 01 00 80 E3 ORR R0, R0, #1
0000:A0B183B4 54 0B DC EB BL setCP15_register_1
0000:A0B183B8 04 00 A0 E1 MOV R0, R4
0000:A0B183BC 10 40 BD E8 LDMFD SP!, {R4,LR}
0000:A0B183C0 EA 0A DC EA B enable_INT
MMU_disable
0000:A0B183C4 10 40 2D E9 STMFD SP!, {R4,LR}
0000:A0B183C8 E0 0A DC EB BL disable_INT
0000:A0B183CC 00 40 A0 E1 MOV R4, R0
0000:A0B183D0 4A 0B DC EB BL getCP15_register_1
0000:A0B183D4 01 00 C0 E3 BIC R0, R0, #1
0000:A0B183D8 4B 0B DC EB BL setCP15_register_1
0000:A0B183DC 04 00 A0 E1 MOV R0, R4
0000:A0B183E0 10 40 BD E8 LDMFD SP!, {R4,LR}
0000:A0B183E4 E1 0A DC EA B enable_INT
isMMUenable
0000:A0B183E8 08 40 2D E9 STMFD SP!, {R3,LR}
0000:A0B183EC 43 0B DC EB BL getCP15_register_1
0000:A0B183F0 01 00 10 E2 ANDS R0, R0, #1
0000:A0B183F4 01 00 A0 13 MOVNE R0, #1
0000:A0B183F8 08 80 BD E8 LDMFD SP!, {R3,PC}
где:
getCP15_register_1
0000:A021B100 00 00 A0 E3 MOV R0, #0
0000:A021B104 10 0F 11 EE MRC p15, 0, R0,c1,c0
0000:A021B108 1E FF 2F E1 BX LR
setCP15_register_1
0000:A021B10C 10 0F 01 EE MCR p15, 0, R0,c1,c0
0000:A021B110 00 00 A0 E1 NOP
0000:A021B114 00 00 A0 E1 NOP
0000:A021B118 00 00 A0 E1 NOP
0000:A021B11C 1E FF 2F E1 BX LR
disable_INT
0000:A021AF50 00 00 0F E1 MRS R0, CPSR
0000:A021AF54 C0 10 80 E3 ORR R1, R0, #0xC0
0000:A021AF58 1F 20 00 E2 AND R2, R0, #0x1F
0000:A021AF5C 10 00 52 E3 CMP R2, #0x10
0000:A021AF60 00 00 00 0F SWIEQ 0
0000:A021AF64 01 F0 21 E1 MSR CPSR_c, R1
0000:A021AF68 C0 00 00 E2 AND R0, R0, #0xC0
0000:A021AF6C 1E FF 2F E1 BX LR ; R0 = old CPSR.f and CPSR.i
enable_INT
0000:A021AF70 00 10 0F E1 MRS R1, CPSR
0000:A021AF74 C0 10 C1 E3 BIC R1, R1, #0xC0
0000:A021AF78 00 10 81 E1 ORR R1, R1, R0
0000:A021AF7C 1F 20 01 E2 AND R2, R1, #0x1F
0000:A021AF80 10 00 52 E3 CMP R2, #0x10
0000:A021AF84 00 00 00 0F SWIEQ 0
0000:A021AF88 01 F0 21 E1 MSR CPSR_c, R1
0000:A021AF8C 1E FF 2F E1 BX LR
И сам ARM Ассемблер знаю неплохо, но вот решил изучить сопроцессор и тут загвоздка.
При вызове их получаю Undefined Instruction, в адресе соответсвующему команде MCR/MRC, слышал что это из-за того что может закрыт доступ к сопроцессорам, тогда как его снова открыть, этот доступ?
В недоумении .... помогите ....