1.1 --- a/src/cpu/sparc/vm/assembler_sparc.hpp Thu Aug 25 20:29:30 2011 -0700 1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.hpp Fri Aug 26 08:52:22 2011 -0700 1.3 @@ -885,8 +885,9 @@ 1.4 } 1.5 1.6 enum ASIs { // page 72, v9 1.7 - ASI_PRIMARY = 0x80, 1.8 - ASI_PRIMARY_LITTLE = 0x88, 1.9 + ASI_PRIMARY = 0x80, 1.10 + ASI_PRIMARY_NOFAULT = 0x82, 1.11 + ASI_PRIMARY_LITTLE = 0x88, 1.12 // Block initializing store 1.13 ASI_ST_BLKINIT_PRIMARY = 0xE2, 1.14 // Most-Recently-Used (MRU) BIS variant 1.15 @@ -1786,9 +1787,12 @@ 1.16 rs1(s) | 1.17 op3(wrreg_op3) | 1.18 u_field(2, 29, 25) | 1.19 - u_field(1, 13, 13) | 1.20 + immed(true) | 1.21 simm(simm13a, 13)); } 1.22 - inline void wrasi( Register d) { v9_only(); emit_long( op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(3, 29, 25)); } 1.23 + inline void wrasi(Register d) { v9_only(); emit_long( op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(3, 29, 25)); } 1.24 + // wrasi(d, imm) stores (d xor imm) to asi 1.25 + inline void wrasi(Register d, int simm13a) { v9_only(); emit_long( op(arith_op) | rs1(d) | op3(wrreg_op3) | 1.26 + u_field(3, 29, 25) | immed(true) | simm(simm13a, 13)); } 1.27 inline void wrfprs( Register d) { v9_only(); emit_long( op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(6, 29, 25)); } 1.28 1.29 1.30 @@ -2631,6 +2635,8 @@ 1.31 void char_arrays_equals(Register ary1, Register ary2, 1.32 Register limit, Register result, 1.33 Register chr1, Register chr2, Label& Ldone); 1.34 + // Use BIS for zeroing 1.35 + void bis_zeroing(Register to, Register count, Register temp, Label& Ldone); 1.36 1.37 #undef VIRTUAL 1.38