Deleted Added
sdiff udiff text old ( 8012:2f71125bf413 ) new ( 8013:2dfcde2e9998 )
full compact
1/*
2 * Copyright (c) 2003, 2004
3 * The Regents of The University of Michigan
4 * All Rights Reserved
5 *
6 * This code is part of the M5 simulator, developed by Nathan Binkert,
7 * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions
8 * from Ron Dreslinski, Dave Greene, Lisa Hsu, Ali Saidi, and Andrew
9 * Schultz.
10 *
11 * Permission is granted to use, copy, create derivative works and
12 * redistribute this software and such derivative works for any purpose,
13 * so long as the copyright notice above, this grant of permission, and
14 * the disclaimer below appear in all copies made; and so long as the
15 * name of The University of Michigan is not used in any advertising or
16 * publicity pertaining to the use or distribution of this software
17 * without specific, written prior authorization.
18 *
19 * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE
20 * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND WITHOUT
21 * WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER EXPRESS OR
22 * IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
23 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF
24 * THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE FOR ANY DAMAGES,
25 * INCLUDING DIRECT, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
26 * DAMAGES, WITH RESPECT TO ANY CLAIM ARISING OUT OF OR IN CONNECTION
27 * WITH THE USE OF THE SOFTWARE, EVEN IF IT HAS BEEN OR IS HEREAFTER
28 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
29 */
30/*
31 * Copyright 1993 Hewlett-Packard Development Company, L.P.
32 *
33 * Permission is hereby granted, free of charge, to any person
34 * obtaining a copy of this software and associated documentation
35 * files (the "Software"), to deal in the Software without
36 * restriction, including without limitation the rights to use, copy,
37 * modify, merge, publish, distribute, sublicense, and/or sell copies
38 * of the Software, and to permit persons to whom the Software is
39 * furnished to do so, subject to the following conditions:
40 *
41 * The above copyright notice and this permission notice shall be
42 * included in all copies or substantial portions of the Software.
43 *
44 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
45 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
46 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
47 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
48 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
49 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
50 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
51 * SOFTWARE.
52 */
53
54/*
55 * Debug Monitor Entry code
56 */
57#include "fromHudsonOsf.h"
58
59 .text
60
61/* return address and padding to octaword align */
62#define STARTFRM 16
63
64 .globl _start
65 .ent _start, 0
66_start:
67_entry:
68 br t0, 2f # get the current PC
692: ldgp gp, 0(t0) # init gp
70
71 /*
72 * SimOS. Stack pointer is start of a valid phys or KSEG page
73 */
74
75 bis sp,sp,s0 /* save sp */
76
77slave: lda v0,(8*1024)(sp) /* end of page */
78
79 subq zero, 1, t0
80 sll t0, 42, t0
81 bis t0, v0, sp
82
83 lda sp, -STARTFRM(sp) # Create a stack frame
84 stq ra, 0(sp) # Place return address on the stack
85
86 .mask 0x84000000, -8
87 .frame sp, STARTFRM, ra
88
89/*
90 * Enable the Floating Point Unit
91 */
92 lda a0, 1(zero)
93 call_pal PAL_WRFEN_ENTRY
94
95/*
96 * Every good C program has a main()
97 */
98
99 beq s0,master
100
101 call_pal PAL_WHAMI_ENTRY
102 bis v0,v0,a0
103 jsr ra, SlaveLoop
104master:
105 jsr ra, main
106
107
108
109/*
110 * The Debug Monitor should never return.
111 * However, just incase...
112 */
113 ldgp gp, 0(ra)
114 bsr zero, _exit
115
116.end _start
117
118
119
120 .globl _exit
121 .ent _exit, 0
122_exit:
123
124 ldq ra, 0(sp) # restore return address
125 lda sp, STARTFRM(sp) # prune back the stack
126 ret zero, (ra) # Back from whence we came
127.end _exit
128
129 .globl cServe
130 .ent cServe 2
131cServe:
132 .option O1
133 .frame sp, 0, ra
134 call_pal PAL_CSERVE_ENTRY
135 ret zero, (ra)
136 .end cServe
137
138 .globl wrfen
139 .ent wrfen 2
140wrfen:
141 .option O1
142 .frame sp, 0, ra
143 call_pal PAL_WRFEN_ENTRY
144 ret zero, (ra)
145 .end wrfen
146 .globl consoleCallback
147 .ent consoleCallback 2
148consoleCallback:
149 br t0, 2f # get the current PC
1502: ldgp gp, 0(t0) # init gp
151 lda sp,-64(sp)
152 stq ra,0(sp)
153 jsr CallBackDispatcher
154 ldq ra,0(sp)
155 lda sp,64(sp)
156 ret zero,(ra)
157 .end consoleCallback
158
159
160 .globl consoleFixup
161 .ent consoleFixup 2
162consoleFixup:
163 br t0, 2f # get the current PC
1642: ldgp gp, 0(t0) # init gp
165 lda sp,-64(sp)
166 stq ra,0(sp)
167 jsr CallBackFixup
168 ldq ra,0(sp)
169 lda sp,64(sp)
170 ret zero,(ra)
171 .end consoleFixup
172
173
174
175 .globl SpinLock
176 .ent SpinLock 2
177SpinLock:
1781:
179 ldq_l a1,0(a0) # interlock complete lock state
180 subl ra,3,v0 # get calling addr[31:0] + 1
181 blbs a1,2f # branch if lock is busy
182 stq_c v0,0(a0) # attempt to acquire lock
183 beq v0,2f # branch if lost atomicity
184 mb # ensure memory coherence
185 ret zero,(ra) # return to caller (v0 is 1)
1862:
187 br zero,1b
188 .end SpinLock
189
190 .globl loadContext
191 .ent loadContext 2
192loadContext:
193 .option O1
194 .frame sp, 0, ra
195 call_pal PAL_SWPCTX_ENTRY
196 ret zero, (ra)
197 .end loadContext
198
199
200 .globl SlaveSpin # Very carefully spin wait
201 .ent SlaveSpin 2 # and swap context without
202SlaveSpin: # using any stack space
203 .option O1
204 .frame sp, 0, ra
205 mov a0, t0 # cpu number
206 mov a1, t1 # cpu rpb pointer (virtual)
207 mov a2, t2 # what to spin on
208
209test: ldl t3, 0(t2)
210 beq t3, test
211 zapnot t1,0x1f,a0 # make rpb physical
212 call_pal PAL_SWPCTX_ENTRY # switch to pcb
213 mov t0, a0 # setup args for SlaveCmd
214 mov t1, a1
215 jsr SlaveCmd # call SlaveCmd
216 ret zero, (ra) # Should never be reached
217 .end SlaveSpin
218
219