MIPS O32 BFD (gdb) disas /rm cvmx_l2c_flush_mem_region_line_reuse,+0x40 Dump of assembler code from 0x2875728 to 0x2875768: 0x02875728 <cvmx_l2c_flush_mem_region_line_reuse+0>: 27 bd ff d0 addiu sp,sp,-48 0x0287572c <cvmx_l2c_flush_mem_region_line_reuse+4>: af b3 00 1c sw s3,28(sp) 0x02875730 <cvmx_l2c_flush_mem_region_line_reuse+8>: 3c 13 07 02 lui s3,0x702 0x02875734 <cvmx_l2c_flush_mem_region_line_reuse+12>: 8e 62 30 b8 lw v0,12472(s3) 0x02875738 <cvmx_l2c_flush_mem_region_line_reuse+16>: af b5 00 24 sw s5,36(sp) 0x0287573c <cvmx_l2c_flush_mem_region_line_reuse+20>: af b4 00 20 sw s4,32(sp) 0x02875740 <cvmx_l2c_flush_mem_region_line_reuse+24>: af b2 00 18 sw s2,24(sp) 0x02875744 <cvmx_l2c_flush_mem_region_line_reuse+28>: af b0 00 10 sw s0,16(sp) 0x02875748 <cvmx_l2c_flush_mem_region_line_reuse+32>: af bf 00 2c sw ra,44(sp) 0x0287574c <cvmx_l2c_flush_mem_region_line_reuse+36>: af b6 00 28 sw s6,40(sp) 0x02875750 <cvmx_l2c_flush_mem_region_line_reuse+40>: af b1 00 14 sw s1,20(sp) GOLD (gdb) disas /rm cvmx_l2c_flush_mem_region_line_reuse,+0x40 Dump of assembler code from 0x2875728 to 0x2875768: 0x02875728 <cvmx_l2c_flush_mem_region_line_reuse+0>: 27 bd ff d0 addiu sp,sp,-48 0x0287572c <cvmx_l2c_flush_mem_region_line_reuse+4>: af b3 00 1c sw s3,28(sp) 0x02875730 <cvmx_l2c_flush_mem_region_line_reuse+8>: 6c cb 07 00 ldr t3,1792(a2) <<<<< should be lui 0x02875734 <cvmx_l2c_flush_mem_region_line_reuse+12>: bf 1a 00 00 cache 0x1a,0(t8) <<<<< should be lw 0x02875738 <cvmx_l2c_flush_mem_region_line_reuse+16>: af b5 00 24 sw s5,36(sp) 0x0287573c <cvmx_l2c_flush_mem_region_line_reuse+20>: af b4 00 20 sw s4,32(sp) 0x02875740 <cvmx_l2c_flush_mem_region_line_reuse+24>: af b2 00 18 sw s2,24(sp) 0x02875744 <cvmx_l2c_flush_mem_region_line_reuse+28>: af b0 00 10 sw s0,16(sp) 0x02875748 <cvmx_l2c_flush_mem_region_line_reuse+32>: af bf 00 2c sw ra,44(sp) 0x0287574c <cvmx_l2c_flush_mem_region_line_reuse+36>: af b6 00 28 sw s6,40(sp) 0x02875750 <cvmx_l2c_flush_mem_region_line_reuse+40>: af b1 00 14 sw s1,20(sp) GCC generated assembly .set macro .set reorder .end cvmx_l2c_flush_one_set_via_line_reuse .size cvmx_l2c_flush_one_set_via_line_reuse, .-cvmx_l2c_flush_one_set_via_line_reuse .align 2 .globl cvmx_l2c_flush_mem_region_line_reuse .set nomips16 .set nomicromips .ent cvmx_l2c_flush_mem_region_line_reuse .type cvmx_l2c_flush_mem_region_line_reuse, @function cvmx_l2c_flush_mem_region_line_reuse: .frame $sp,48,$31 # vars= 0, regs= 8/0, args= 16, gp= 0 .mask 0x807f0000,-4 .fmask 0x00000000,0 addiu $sp,$sp,-48 sw $19,28($sp) lui $19,%hi(indxalias$97671) lw $2,%lo(indxalias$97671)($19) sw $21,36($sp) sw $20,32($sp) sw $18,24($sp) sw $16,16($sp) sw $31,44($sp) sw $22,40($sp) sw $17,20($sp) ... .data .align 2 .type indxalias$97671, @object .size indxalias$97671, 4 indxalias$97671: .word -1 .align 2 ...
Created attachment 9828 [details] testcase
Created attachment 9829 [details] testcase a.s
I found the corruption occurred at an earlier stage, ld -r Attached files can used to reproduce the issue. mips64-linux-gnuabi64-as -mabi=32 a.s -o a.o mips64-linux-gnuabi64-as -mabi=32 b.s -o b.o mips64-linux-gnuabi64-ld.gold -r -o test.a a.o b.o GNU gold (GNU Binutils for Ubuntu 2.27.90.20170114) 1.14 n32/n64 appears to be OK. Omitting a.o also gives a correct result. Also occurs with 2.27, so not a regression.