annotate src/os_cpu/solaris_sparc/vm/solaris_sparc.s @ 196:d1605aabd0a1 jdk7-b30

6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell
author xdono
date Wed, 02 Jul 2008 12:55:16 -0700
parents ba764ed4b6f2
children c18cbe5936b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 !!
196
d1605aabd0a1 6719955: Update copyright year
xdono
parents: 113
diff changeset
2 !! Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 !! DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 !!
a61af66fc99e Initial load
duke
parents:
diff changeset
5 !! This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 !! under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 !! published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 !!
a61af66fc99e Initial load
duke
parents:
diff changeset
9 !! This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 !! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 !! FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 !! version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 !! accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 !!
a61af66fc99e Initial load
duke
parents:
diff changeset
15 !! You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 !! 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 !! Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 !!
a61af66fc99e Initial load
duke
parents:
diff changeset
19 !! Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
a61af66fc99e Initial load
duke
parents:
diff changeset
20 !! CA 95054 USA or visit www.sun.com if you need additional information or
a61af66fc99e Initial load
duke
parents:
diff changeset
21 !! have any questions.
a61af66fc99e Initial load
duke
parents:
diff changeset
22 !!
a61af66fc99e Initial load
duke
parents:
diff changeset
23
a61af66fc99e Initial load
duke
parents:
diff changeset
24 !! Prototype: int SafeFetch32 (int * adr, int ErrValue)
a61af66fc99e Initial load
duke
parents:
diff changeset
25 !! The "ld" at Fetch32 is potentially faulting instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
26 !! If the instruction traps the trap handler will arrange
a61af66fc99e Initial load
duke
parents:
diff changeset
27 !! for control to resume at Fetch32Resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
28 !! By convention with the trap handler we ensure there is a non-CTI
a61af66fc99e Initial load
duke
parents:
diff changeset
29 !! instruction in the trap shadow.
a61af66fc99e Initial load
duke
parents:
diff changeset
30 !!
a61af66fc99e Initial load
duke
parents:
diff changeset
31 !! The reader might be tempted to move this service to .il.
a61af66fc99e Initial load
duke
parents:
diff changeset
32 !! Don't. Sun's CC back-end reads and optimize code emitted
a61af66fc99e Initial load
duke
parents:
diff changeset
33 !! by the .il "call", in some cases optimizing the code, completely eliding it,
a61af66fc99e Initial load
duke
parents:
diff changeset
34 !! or by moving the code from the "call site".
a61af66fc99e Initial load
duke
parents:
diff changeset
35
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
36 !! ASM better know we may use G6 for our own purposes
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
37 .register %g6, #ignore
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
38
0
a61af66fc99e Initial load
duke
parents:
diff changeset
39 .globl SafeFetch32
a61af66fc99e Initial load
duke
parents:
diff changeset
40 .align 32
a61af66fc99e Initial load
duke
parents:
diff changeset
41 .global Fetch32PFI, Fetch32Resume
a61af66fc99e Initial load
duke
parents:
diff changeset
42 SafeFetch32:
a61af66fc99e Initial load
duke
parents:
diff changeset
43 mov %o0, %g1
a61af66fc99e Initial load
duke
parents:
diff changeset
44 mov %o1, %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
45 Fetch32PFI:
a61af66fc99e Initial load
duke
parents:
diff changeset
46 ld [%g1], %o0 !! <-- Potentially faulting instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
47 Fetch32Resume:
a61af66fc99e Initial load
duke
parents:
diff changeset
48 nop
a61af66fc99e Initial load
duke
parents:
diff changeset
49 retl
a61af66fc99e Initial load
duke
parents:
diff changeset
50 nop
a61af66fc99e Initial load
duke
parents:
diff changeset
51
a61af66fc99e Initial load
duke
parents:
diff changeset
52 .globl SafeFetchN
a61af66fc99e Initial load
duke
parents:
diff changeset
53 .align 32
a61af66fc99e Initial load
duke
parents:
diff changeset
54 .globl FetchNPFI, FetchNResume
a61af66fc99e Initial load
duke
parents:
diff changeset
55 SafeFetchN:
a61af66fc99e Initial load
duke
parents:
diff changeset
56 mov %o0, %g1
a61af66fc99e Initial load
duke
parents:
diff changeset
57 mov %o1, %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
58 FetchNPFI:
a61af66fc99e Initial load
duke
parents:
diff changeset
59 ldn [%g1], %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
60 FetchNResume:
a61af66fc99e Initial load
duke
parents:
diff changeset
61 nop
a61af66fc99e Initial load
duke
parents:
diff changeset
62 retl
a61af66fc99e Initial load
duke
parents:
diff changeset
63 nop
a61af66fc99e Initial load
duke
parents:
diff changeset
64
a61af66fc99e Initial load
duke
parents:
diff changeset
65 !! Possibilities:
a61af66fc99e Initial load
duke
parents:
diff changeset
66 !! -- membar
a61af66fc99e Initial load
duke
parents:
diff changeset
67 !! -- CAS (SP + BIAS, G0, G0)
a61af66fc99e Initial load
duke
parents:
diff changeset
68 !! -- wr %g0, %asi
a61af66fc99e Initial load
duke
parents:
diff changeset
69
a61af66fc99e Initial load
duke
parents:
diff changeset
70 .global SpinPause
a61af66fc99e Initial load
duke
parents:
diff changeset
71 .align 32
a61af66fc99e Initial load
duke
parents:
diff changeset
72 SpinPause:
a61af66fc99e Initial load
duke
parents:
diff changeset
73 retl
a61af66fc99e Initial load
duke
parents:
diff changeset
74 mov %g0, %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
75
a61af66fc99e Initial load
duke
parents:
diff changeset
76
a61af66fc99e Initial load
duke
parents:
diff changeset
77
a61af66fc99e Initial load
duke
parents:
diff changeset
78 .globl _Copy_conjoint_jlongs_atomic
a61af66fc99e Initial load
duke
parents:
diff changeset
79 .align 32
a61af66fc99e Initial load
duke
parents:
diff changeset
80 .global _Copy_conjoint_jlongs_atomic
a61af66fc99e Initial load
duke
parents:
diff changeset
81 _Copy_conjoint_jlongs_atomic:
a61af66fc99e Initial load
duke
parents:
diff changeset
82 cmp %o0, %o1
a61af66fc99e Initial load
duke
parents:
diff changeset
83 bleu 4f
a61af66fc99e Initial load
duke
parents:
diff changeset
84 sll %o2, 3, %o4
a61af66fc99e Initial load
duke
parents:
diff changeset
85 ba 2f
a61af66fc99e Initial load
duke
parents:
diff changeset
86 1:
a61af66fc99e Initial load
duke
parents:
diff changeset
87 subcc %o4, 8, %o4
a61af66fc99e Initial load
duke
parents:
diff changeset
88 std %o2, [%o1]
a61af66fc99e Initial load
duke
parents:
diff changeset
89 add %o0, 8, %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
90 add %o1, 8, %o1
a61af66fc99e Initial load
duke
parents:
diff changeset
91 2:
a61af66fc99e Initial load
duke
parents:
diff changeset
92 bge,a 1b
a61af66fc99e Initial load
duke
parents:
diff changeset
93 ldd [%o0], %o2
a61af66fc99e Initial load
duke
parents:
diff changeset
94 ba 5f
a61af66fc99e Initial load
duke
parents:
diff changeset
95 nop
a61af66fc99e Initial load
duke
parents:
diff changeset
96 3:
a61af66fc99e Initial load
duke
parents:
diff changeset
97 std %o2, [%o1+%o4]
a61af66fc99e Initial load
duke
parents:
diff changeset
98 4:
a61af66fc99e Initial load
duke
parents:
diff changeset
99 subcc %o4, 8, %o4
a61af66fc99e Initial load
duke
parents:
diff changeset
100 bge,a 3b
a61af66fc99e Initial load
duke
parents:
diff changeset
101 ldd [%o0+%o4], %o2
a61af66fc99e Initial load
duke
parents:
diff changeset
102 5:
a61af66fc99e Initial load
duke
parents:
diff changeset
103 retl
a61af66fc99e Initial load
duke
parents:
diff changeset
104 nop
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106
a61af66fc99e Initial load
duke
parents:
diff changeset
107
a61af66fc99e Initial load
duke
parents:
diff changeset
108 .globl _raw_thread_id
a61af66fc99e Initial load
duke
parents:
diff changeset
109 .align 32
a61af66fc99e Initial load
duke
parents:
diff changeset
110 _raw_thread_id:
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
111 .register %g7, #scratch
0
a61af66fc99e Initial load
duke
parents:
diff changeset
112 retl
a61af66fc99e Initial load
duke
parents:
diff changeset
113 mov %g7, %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115
a61af66fc99e Initial load
duke
parents:
diff changeset
116 .globl _flush_reg_windows
a61af66fc99e Initial load
duke
parents:
diff changeset
117 .align 32
a61af66fc99e Initial load
duke
parents:
diff changeset
118 _flush_reg_windows:
a61af66fc99e Initial load
duke
parents:
diff changeset
119 ta 0x03
a61af66fc99e Initial load
duke
parents:
diff changeset
120 retl
a61af66fc99e Initial load
duke
parents:
diff changeset
121 mov %fp, %o0
a61af66fc99e Initial load
duke
parents:
diff changeset
122
a61af66fc99e Initial load
duke
parents:
diff changeset
123