annotate src/os_cpu/linux_sparc/vm/linux_sparc.s @ 4837:eff609af17d7

7127706: G1: re-enable survivors during the initial-mark pause Summary: Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned. Reviewed-by: brutisso, johnc
author tonyp
date Wed, 25 Jan 2012 12:58:23 -0500
parents c18cbe5936b8
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