Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | # ========== Copyright Header Begin ========================================== |
2 | # | |
3 | # OpenSPARC T2 Processor File: SamCmd.py | |
4 | # Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. | |
5 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES. | |
6 | # | |
7 | # The above named program is free software; you can redistribute it and/or | |
8 | # modify it under the terms of the GNU General Public | |
9 | # License version 2 as published by the Free Software Foundation. | |
10 | # | |
11 | # The above named program is distributed in the hope that it will be | |
12 | # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | # General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU General Public | |
17 | # License along with this work; if not, write to the Free Software | |
18 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. | |
19 | # | |
20 | # ========== Copyright Header End ============================================ | |
21 | # | |
22 | # execfile('sam.py') | |
23 | # | |
24 | import sam | |
25 | ||
26 | # print all sam py commands | |
27 | def help_sam (): | |
28 | print "version ()" | |
29 | print "quit ()" | |
30 | print "run (mode=" ")" | |
31 | print "stop ()" | |
32 | print "stepi (n=1,cpu=-1,file=" ")" | |
33 | print "mem (start_addr=0,size=8)" | |
34 | print "mem_dis (sstart_addr=0,size=8)" | |
35 | print "mem_va (start_addr=0,size=8)" | |
36 | print "mem_va_dis (start_addr=0,size=8)" | |
37 | print "conf (arg=" ")" | |
38 | print "write (value,addr)" | |
39 | print "setreg (regname,value)" | |
40 | print "sam_help (command=" ")" | |
41 | print "pc ()" | |
42 | print "rg (cpu= 0, gl = -1)" | |
43 | print "rw (cpu= 0, wp = -1)" | |
44 | print "rtr (cpu= 0, tl = -1)" | |
45 | print "rfp (cpu= 0)" | |
46 | print "rdf (cpu= 0)" | |
47 | print "rpr (cpu= 0)" | |
48 | print "rasr (cpu= 0)" | |
49 | print "rhpr (cpu= 0)" | |
50 | ||
51 | print "mips (<#|off>)" | |
52 | print "break_pc (pc_va, cpu_id|all) - set a breakpoint on pc value" | |
53 | print "break_opcode (opcode, cpu_id|all) - set a breakpoint on opcode" | |
54 | print "bplist() -list all breakpoints" | |
55 | print "dbreak (bp_id='all', cpu='all') - delete a breakpoint" | |
56 | ||
57 | ||
58 | """ | |
59 | ||
60 | print "file - run <script file name>" | |
61 | print "load - load <mode> <addr> <value>" | |
62 | print "console-send - console-send <string>"} | |
63 | print "dbg - dbg on|off" | |
64 | print "exper - exper <N>" | |
65 | print "stepim - stepim <N>" | |
66 | print "stept - stept <Msecs>" | |
67 | print "on - on STOP <command>" | |
68 | print "rdt - rdt [<FILE>]" | |
69 | print "diskdelay - diskdelay [ddelay[/wrddelay]] [start_cycle]" | |
70 | print "time - time start | stop" | |
71 | print "sync - on|off" | |
72 | print "resume - back to prev sync mode" | |
73 | print "alias - alias [<old cmd>] [<new cmd>] " | |
74 | print "penable - penable [-all | <thN>]" | |
75 | print "pdisable -pdisable [-all | <thN>]" | |
76 | print "pty - pty" | |
77 | ||
78 | """ | |
79 | ||
80 | ||
81 | ||
82 | # simulator current version | |
83 | def version (): | |
84 | sam.ui_exec("version") | |
85 | ||
86 | # quit sim | |
87 | def quit (): | |
88 | sam.ui_exec("quit"); | |
89 | ||
90 | ||
91 | # run <mode> | |
92 | def run (mode=" "): | |
93 | sam.ui_exec("run "+mode) | |
94 | ||
95 | # stop sim | |
96 | def stop (): | |
97 | sam.ui_exec("stop") | |
98 | ||
99 | ||
100 | # stepi [<ninstr>] [-t [cpuid]] [-o <file_name>] | |
101 | def stepi (n=1,cpu=-1,file=" "): | |
102 | cmd = "stepi "+str(n) | |
103 | if cpu >= 0 : | |
104 | cmd += " -t "+str(cpu) | |
105 | if file != " " : | |
106 | cmd += " -o "+file | |
107 | sam.ui_exec(cmd) | |
108 | ||
109 | # read mem from physical start_addr, Size bytes | |
110 | def mem (start_addr=0,size=8): | |
111 | cmd = "mem -a "+str(start_addr)+" -s "+str(size) | |
112 | sam.ui_exec(cmd) | |
113 | ||
114 | # read mem from virtual start_addr, Size bytes | |
115 | def mem_va (start_addr=0,size=8): | |
116 | cmd = "mem -a "+str(start_addr)+" -s "+str(size)+" -va" | |
117 | sam.ui_exec(cmd) | |
118 | ||
119 | # disassemble mem from virtual start_addr, Size bytes | |
120 | def mem_va_dis (start_addr=0,size=8): | |
121 | cmd = "mem -a "+str(start_addr)+" -s "+str(size)+" -va -dis" | |
122 | sam.ui_exec(cmd) | |
123 | ||
124 | # disassemble mem from physical start_addr, Size bytes | |
125 | def mem_dis (start_addr=0,size=8): | |
126 | cmd = "mem -a "+str(start_addr)+" -s "+str(size)+" -dis" | |
127 | sam.ui_exec(cmd) | |
128 | ||
129 | # conf <name> <value> | |
130 | def conf (arg=" "): | |
131 | sam.ui_exec("conf "+arg) | |
132 | ||
133 | # write word <value> <paddr> | |
134 | def write (value,addr): | |
135 | cmd = "write word "+str(value)+" "+str(addr) | |
136 | sam.ui_exec(cmd) | |
137 | ||
138 | # setreg <regname> <value> | |
139 | def setreg (regname,value): | |
140 | cmd = "setreg "+regname+" "+str(value) | |
141 | sam.ui_exec(cmd) | |
142 | ||
143 | ||
144 | # help <command> | |
145 | def sam_help (command=" "): | |
146 | sam.ui_exec("help "+command); | |
147 | ||
148 | ||
149 | # display current pc values | |
150 | def pc (): | |
151 | sam.ui_exec("pc") | |
152 | ||
153 | # display cpu global regs | |
154 | def rg (cpu= 0, gl = -1): | |
155 | cmd = "r -cpu "+str(cpu)+" -g "+str(gl) | |
156 | sam.ui_exec(cmd) | |
157 | ||
158 | # display windowed regs | |
159 | def rw (cpu= 0, wp = -1): | |
160 | cmd = "r -cpu "+str(cpu)+" -w "+str(wp) | |
161 | sam.ui_exec(cmd) | |
162 | ||
163 | # display trap regs | |
164 | def rtr (cpu= 0, tl = -1): | |
165 | cmd = "r -cpu "+str(cpu)+" -w "+str(tl) | |
166 | sam.ui_exec(cmd) | |
167 | ||
168 | # display floating point regs | |
169 | def rfp (cpu= 0): | |
170 | cmd = "r -cpu "+str(cpu)+" -f" | |
171 | sam.ui_exec(cmd) | |
172 | ||
173 | ||
174 | # display double floating point regs | |
175 | def rdf (cpu= 0): | |
176 | cmd = "r -cpu "+str(cpu)+" -df" | |
177 | sam.ui_exec(cmd) | |
178 | ||
179 | # display proc regs | |
180 | def rpr (cpu= 0): | |
181 | cmd = "r -cpu "+str(cpu)+" -pr" | |
182 | sam.ui_exec(cmd) | |
183 | ||
184 | # display asr regs | |
185 | def rasr (cpu= 0): | |
186 | cmd = "r -cpu "+str(cpu)+" -asr" | |
187 | sam.ui_exec(cmd) | |
188 | ||
189 | # display hypervisor regs | |
190 | def rhpr (cpu= 0): | |
191 | cmd = "r -cpu "+str(cpu)+" -hpr" | |
192 | sam.ui_exec(cmd) | |
193 | ||
194 | ||
195 | # mips log on/off | |
196 | def mips (mode): | |
197 | cmd = "mips "+str(mode) | |
198 | sam.ui_exec(cmd) | |
199 | ||
200 | ||
201 | # set a breakpoint on pc value | |
202 | def break_pc (pc, cpu = 0): | |
203 | cmd = "break cpu="+str(cpu)+" pc="+str(pc) | |
204 | sam.ui_exec(cmd) | |
205 | ||
206 | ||
207 | # set a breakpoint on opcode value | |
208 | def break_opcode (opcode, cpu = 0): | |
209 | cmd = "break cpu="+str(cpu)+" opcode="+str(opcode) | |
210 | sam.ui_exec(cmd) | |
211 | ||
212 | # list breakpoints | |
213 | def bplist (): | |
214 | cmd = "break ?" | |
215 | sam.ui_exec(cmd) | |
216 | ||
217 | ||
218 | # delete a breakpoint | |
219 | def dbreak (bp_id="all", cpu="all"): | |
220 | cmd = "dbreak cpu="+str(cpu) | |
221 | if bp_id != "all" : | |
222 | cmd += " bp_id="+str(bp_id) | |
223 | sam.ui_exec(cmd) | |
224 | ||
225 |