.globl memsetup memsetup: mov r11, lr adr r0, SystemUnitTable bl reginit @ Steps 2a..4d adr r0,MemTable1 bl reginit ... /********************************************************************** * * reginit * * PURPOSE: initialize stuff using a addr/data pair table * PARAMS: r0 - address the the table * REGISTERS: r0, r1, r2, r3 * CALLS: Nothing * RETURNS: Nothing **********************************************************************/ reginit: 1: ldmia r0!, {r1,r2} @ load reg/value from regtable cmp r1, #0 @ at end? strne r2, [r1] @ if not, store value into reg ldrne r3, [r1] @ if not, read it back (see PXA errata) bne 1b @ if not, branch back mov pc, lr ... MemTable1: @ Info on this sequence is in the OS Developers Guide, Section 10.0 on page 13 @ also see Developers Manual, Section 6.12 on page 6-76 @ write MSC0, MSC1, MSC2 (6-44) .long MSC0, 0x7ff0fdc3 @ f4c0 .long MSC1, 0x29842981 .long MSC2, 0x29842984 ...