101 //----------OS and Locking Instructions---------------------------------------- |
101 //----------OS and Locking Instructions---------------------------------------- |
102 |
102 |
103 // This name is KNOWN by the ADLC and cannot be changed. |
103 // This name is KNOWN by the ADLC and cannot be changed. |
104 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type |
104 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type |
105 // for this guy. |
105 // for this guy. |
106 instruct tlsLoadP(eAXRegP dst, eFlagsReg cr) %{ |
106 instruct tlsLoadP(eRegP dst, eFlagsReg cr) %{ |
107 match(Set dst (ThreadLocal)); |
107 match(Set dst (ThreadLocal)); |
108 effect(DEF dst, KILL cr); |
108 effect(DEF dst, KILL cr); |
109 |
109 |
110 format %{ "MOV EAX, Thread::current()" %} |
110 format %{ "MOV $dst, Thread::current()" %} |
111 ins_encode( linux_tlsencode(dst) ); |
111 ins_encode( linux_tlsencode(dst) ); |
112 ins_pipe( ialu_reg_fat ); |
112 ins_pipe( ialu_reg_fat ); |
113 %} |
113 %} |
114 |
114 |
115 instruct TLS(eAXRegP dst) %{ |
115 instruct TLS(eRegP dst) %{ |
116 match(Set dst (ThreadLocal)); |
116 match(Set dst (ThreadLocal)); |
117 |
117 |
118 expand %{ |
118 expand %{ |
119 tlsLoadP(dst); |
119 tlsLoadP(dst); |
120 %} |
120 %} |