annotate src/os_cpu/linux_sparc/vm/linux_sparc.s @ 1552:c18cbe5936b8

6941466: Oracle rebranding changes for Hotspot repositories Summary: Change all the Sun copyrights to Oracle copyright Reviewed-by: ohair
author trims
date Thu, 27 May 2010 19:08:38 -0700
parents d1605aabd0a1
children 980532a806a5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
133
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
1 #
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
2 # Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
133
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
4 #
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
5 # This code is free software; you can redistribute it and/or modify it
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
6 # under the terms of the GNU General Public License version 2 only, as
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
7 # published by the Free Software Foundation.
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
8 #
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
9 # This code is distributed in the hope that it will be useful, but WITHOUT
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
12 # version 2 for more details (a copy is included in the LICENSE file that
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
13 # accompanied this code).
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
14 #
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License version
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
16 # 2 along with this work; if not, write to the Free Software Foundation,
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
18 #
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
20 # or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
21 # questions.
133
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
22 #
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
23
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
24 # Prototype: int SafeFetch32 (int * adr, int ErrValue)
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
25 # The "ld" at Fetch32 is potentially faulting instruction.
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
26 # If the instruction traps the trap handler will arrange
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
27 # for control to resume at Fetch32Resume.
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
28 # By convention with the trap handler we ensure there is a non-CTI
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
29 # instruction in the trap shadow.
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
30
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
31
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
32 .globl SafeFetch32, Fetch32PFI, Fetch32Resume
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
33 .globl SafeFetchN
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
34 .align 32
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
35 .type SafeFetch32,@function
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
36 SafeFetch32:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
37 mov %o0, %g1
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
38 mov %o1, %o0
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
39 Fetch32PFI:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
40 # <-- Potentially faulting instruction
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
41 ld [%g1], %o0
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
42 Fetch32Resume:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
43 nop
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
44 retl
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
45 nop
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
46
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
47 .globl SafeFetchN, FetchNPFI, FetchNResume
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
48 .type SafeFetchN,@function
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
49 .align 32
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
50 SafeFetchN:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
51 mov %o0, %g1
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
52 mov %o1, %o0
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
53 FetchNPFI:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
54 ldn [%g1], %o0
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
55 FetchNResume:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
56 nop
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
57 retl
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
58 nop
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
59
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
60 # Possibilities:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
61 # -- membar
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
62 # -- CAS (SP + BIAS, G0, G0)
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
63 # -- wr %g0, %asi
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
64
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
65 .globl SpinPause
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
66 .type SpinPause,@function
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
67 .align 32
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
68 SpinPause:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
69 retl
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
70 mov %g0, %o0
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
71
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
72 .globl _Copy_conjoint_jlongs_atomic
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
73 .type _Copy_conjoint_jlongs_atomic,@function
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
74 _Copy_conjoint_jlongs_atomic:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
75 cmp %o0, %o1
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
76 bleu 4f
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
77 sll %o2, 3, %o4
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
78 ba 2f
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
79 1:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
80 subcc %o4, 8, %o4
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
81 std %o2, [%o1]
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
82 add %o0, 8, %o0
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
83 add %o1, 8, %o1
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
84 2:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
85 bge,a 1b
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
86 ldd [%o0], %o2
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
87 ba 5f
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
88 nop
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
89 3:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
90 std %o2, [%o1+%o4]
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
91 4:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
92 subcc %o4, 8, %o4
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
93 bge,a 3b
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
94 ldd [%o0+%o4], %o2
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
95 5:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
96 retl
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
97 nop
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
98
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
99
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
100 .globl _flush_reg_windows
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
101 .align 32
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
102 _flush_reg_windows:
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
103 ta 0x03
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
104 retl
435e64505015 6693457: Open-source hotspot linux-sparc support
phh
parents:
diff changeset
105 mov %fp, %o0