Mercurial > hg > truffle
comparison src/cpu/sparc/vm/stubGenerator_sparc.cpp @ 697:922aedc96ef5
Merge
author | ysr |
---|---|
date | Fri, 03 Apr 2009 15:59:19 -0700 |
parents | d0994e5bebce |
children | 6b2273dd6fa9 |
comparison
equal
deleted
inserted
replaced
696:f18338cf04b0 | 697:922aedc96ef5 |
---|---|
813 } | 813 } |
814 | 814 |
815 return start; | 815 return start; |
816 } | 816 } |
817 Label _atomic_add_stub; // called from other stubs | 817 Label _atomic_add_stub; // called from other stubs |
818 | |
819 | |
820 // Support for void OrderAccess::fence(). | |
821 // | |
822 address generate_fence() { | |
823 StubCodeMark mark(this, "StubRoutines", "fence"); | |
824 address start = __ pc(); | |
825 | |
826 __ membar(Assembler::Membar_mask_bits(Assembler::LoadLoad | Assembler::LoadStore | | |
827 Assembler::StoreLoad | Assembler::StoreStore)); | |
828 __ retl(false); | |
829 __ delayed()->nop(); | |
830 | |
831 return start; | |
832 } | |
833 | 818 |
834 | 819 |
835 //------------------------------------------------------------------------------------------------------------------------ | 820 //------------------------------------------------------------------------------------------------------------------------ |
836 // The following routine generates a subroutine to throw an asynchronous | 821 // The following routine generates a subroutine to throw an asynchronous |
837 // UnknownError when an unsafe access gets a fault that could not be | 822 // UnknownError when an unsafe access gets a fault that could not be |
2859 StubRoutines::_atomic_add_entry = generate_atomic_add(); | 2844 StubRoutines::_atomic_add_entry = generate_atomic_add(); |
2860 StubRoutines::_atomic_xchg_ptr_entry = StubRoutines::_atomic_xchg_entry; | 2845 StubRoutines::_atomic_xchg_ptr_entry = StubRoutines::_atomic_xchg_entry; |
2861 StubRoutines::_atomic_cmpxchg_ptr_entry = StubRoutines::_atomic_cmpxchg_entry; | 2846 StubRoutines::_atomic_cmpxchg_ptr_entry = StubRoutines::_atomic_cmpxchg_entry; |
2862 StubRoutines::_atomic_cmpxchg_long_entry = generate_atomic_cmpxchg_long(); | 2847 StubRoutines::_atomic_cmpxchg_long_entry = generate_atomic_cmpxchg_long(); |
2863 StubRoutines::_atomic_add_ptr_entry = StubRoutines::_atomic_add_entry; | 2848 StubRoutines::_atomic_add_ptr_entry = StubRoutines::_atomic_add_entry; |
2864 StubRoutines::_fence_entry = generate_fence(); | |
2865 #endif // COMPILER2 !=> _LP64 | 2849 #endif // COMPILER2 !=> _LP64 |
2866 } | 2850 } |
2867 | 2851 |
2868 | 2852 |
2869 void generate_all() { | 2853 void generate_all() { |