; void TestTraceBuffer(): ... 280121B0 mov r1, #1 280121B4 mov r0, #1 280121B8 bl |SetDebugControlAndStatus| ; enable trace buffer 280121BC add r0, sp, #0x11, 28 280121C0 bl |Test| ; call Test ... ; void Test(int * p) 280121F0 mov r12, sp 280121F4 stmdb sp!, {r0} 280121F8 stmdb sp!, {r12, lr} 280121FC ldr r0, [sp, #8] 28012200 bl |Test1| ; call Test1 28012204 ldmia sp, {sp, pc} ; void Test1(int * p) 28012208 mov r12, sp 2801220C stmdb sp!, {r0} 28012210 stmdb sp!, {r12, lr} 28012214 ldr r0, [sp, #8] 28012218 mov r1, #0x7B 2801221C str r1, [r0] ; *p = 123 - triggers a data breakpoint 28012220 ldmia sp, {sp, pc}
Figure 1: Annotated disassembly listing for functions TestTraceBuffer, Test, and Test1 used to demonstrate the XScale trace buffer.