src/cpu/sparc/vm/assembler_sparc.hpp

changeset 3110
d968f546734e
parent 3088
4fe626cbf0bf
parent 3092
baf763f388e6
child 3310
6729bbc1fcd6
     1.1 --- a/src/cpu/sparc/vm/assembler_sparc.hpp	Fri Sep 02 21:33:57 2011 -0700
     1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.hpp	Wed Sep 07 11:52:00 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 @@ -2625,6 +2629,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  

mercurial