1 .equ $fprel, 2 2 3 .ent foo 4foo: 5 # Test various forms of relocation syntax. 6 7 lui $4,(%hi gvar) 8 addiu $4,$4,(%lo (gvar)) 9 lw $4,%lo gvar($5) 10 11 # Check that registers aren't confused with $ identifiers. 12 13 lw $4,($fprel)($fp) 14 15 # Check various forms of paired relocations. 16 17 lui $4,%call_hi(gfunc) 18 addu $4,$4,$gp 19 lw $25,%call_lo(gfunc)($4) 20 21 lui $4,%got_hi(gvar) 22 addu $4,$4,$gp 23 lw $5,%got_lo(gvar)($4) 24 25 lw $4,%got(lvar)($28) 26 sb $5,%lo(lvar)($4) 27 28 lui $4,%call_hi(gfunc) 29 addiu $4,$4,%call_lo(gfunc) 30 31 lui $4,%got_hi(gvar) 32 addiu $4,$4,%got_lo(gvar) 33 34 lw $4,%got(lvar)($28) 35 addiu $4,$4,%lo(lvar) 36 37 # Check individual relocations. 38 39 lw $25,%call16(gfunc)($28) 40 addiu $4,$28,%call16(gfunc) 41 42 lw $4,%got_disp(gvar)($28) 43 addiu $4,$28,%got_disp(gvar) 44 45 lw $4,%gp_rel(gvar)($28) 46 sw $4,%gp_rel(gvar)($28) 47 addiu $4,$28,%gp_rel(gvar) 48 49 .space 64 50 .end foo 51 52 .data 53lvar: .word 1,2 54