.org 0x100 # r3: base gpio # r4: scratch # r5: address to be checked # r6: 0xaa # r7: 0x55 # r8: 0xff # r10: end-address 0x100000 init: l.movhi r3,0x9100 # r3 = base address gpio l.add r4,r0,r0 # r4 = 0 l.sh 0x0(r3),r4 # *r3 = 0, reset LEDs l.addi r5,r0,0x200 # r5 = 0x200 l.movhi r10,0x100 # r10 = 0x100000 = end address l.addi r6,r0,0xaa l.addi r7,r0,0x55 l.addi r8,r0,0xff loop: # test pattern 0 l.sb 0(r5), r0 l.lbz r4, 0(r5) l.sfne r4, r0 l.bf memerr # test pattern aa l.sb 0(r5), r6 l.lbz r4, 0(r5) l.sfne r4, r6 l.bf memerr # test pattern 55 l.sb 0(r5), r7 l.lbz r4, 0(r5) l.sfne r4, r7 l.bf memerr # test pattern ff l.sb 0(r5), r8 l.lbz r4, 0(r5) l.sfne r4, r8 l.bf memerr l.addi r5, r5, 1 l.sfltu r5, r10 l.bf loop l.j end memerr: l.sb 0(r3),r8 endless: l.j endless end: l.nop l.j end