Changes in tools/ew.py [644352c:3f4c537a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/ew.py
r644352c r3f4c537a 1 1 #!/usr/bin/env python 2 2 # 3 # Copyright (c) 2013 Jakub Jermar 3 # Copyright (c) 2013 Jakub Jermar 4 4 # All rights reserved. 5 5 # … … 33 33 """ 34 34 35 import os 35 import os 36 36 import sys 37 import subprocess 37 import subprocess 38 38 import autotool 39 39 import platform 40 import thread 41 import time 40 42 41 43 overrides = {} … … 46 48 return False 47 49 48 def cfg_get(platform, machine ):49 if machine == "" :50 def cfg_get(platform, machine, processor): 51 if machine == "" or emulators[platform].has_key("run"): 50 52 return emulators[platform] 51 el se:53 elif processor == "" or emulators[platform][machine].has_key("run"): 52 54 return emulators[platform][machine] 55 else: 56 return emulators[platform][machine][processor] 53 57 54 58 def run_in_console(cmd, title): … … 93 97 return 'system-sparc64', '' 94 98 99 def hdisk_mk(): 100 if not os.path.exists('hdisk.img'): 101 subprocess.call('tools/mkfat.py 1048576 uspace/dist/data hdisk.img', shell = True) 102 95 103 def qemu_bd_options(): 96 104 if is_override('nohdd'): 97 105 return '' 98 99 if not os.path.exists('hdisk.img'): 100 subprocess.call('tools/mkfat.py 1048576 uspace/dist/data hdisk.img', shell = True) 101 102 return ' -hda hdisk.img' 106 107 hdisk_mk() 108 109 return ' -drive file=hdisk.img,index=0,media=disk,format=raw' 103 110 104 111 def qemu_nic_ne2k_options(): … … 127 134 nic_options += qemu_nic_e1k_options() 128 135 129 return nic_options + ' -net user -redir udp:8080::8080 -redir udp:8081::8081 -redir tcp:8080::8080 -redir tcp:8081::8081 -redir tcp:2223::2223'136 return nic_options + ' -net user,hostfwd=udp::8080-:8080,hostfwd=udp::8081-:8081,hostfwd=tcp::8080-:8080,hostfwd=tcp::8081-:8081,hostfwd=tcp::2223-:2223' 130 137 131 138 def qemu_usb_options(): … … 139 146 return ' -device intel-hda -device hda-duplex' 140 147 141 def qemu_run(platform, machine ):142 cfg = cfg_get(platform, machine )148 def qemu_run(platform, machine, processor): 149 cfg = cfg_get(platform, machine, processor) 143 150 suffix, options = platform_to_qemu_options(platform, machine) 144 151 cmd = 'qemu-' + suffix … … 173 180 if not is_override('dryrun'): 174 181 subprocess.call(cmdline, shell = True) 175 176 def ski_run(platform, machine ):182 183 def ski_run(platform, machine, processor): 177 184 run_in_console('ski -i contrib/conf/ski.conf', 'HelenOS/ia64 on ski') 178 185 179 def msim_run(platform, machine): 186 def msim_run(platform, machine, processor): 187 hdisk_mk() 180 188 run_in_console('msim -c contrib/conf/msim.conf', 'HelenOS/mips32 on msim') 181 189 190 def spike_run(platform, machine, processor): 191 run_in_console('spike image.boot', 'HelenOS/risvc64 on Spike') 192 193 def gem5_console_thread(): 194 # Wait a little bit so that gem5 can create the port 195 time.sleep(1) 196 term = os.environ['M5_PATH'] + '/gem5/util/term/m5term' 197 port = 3457 198 run_in_console('expect -c \'spawn %s %d; expect "ok " { send "boot\n" } timeout exp_continue; interact\'' % (term, port), 'HelenOS/sun4v on gem5') 199 200 def gem5_run(platform, machine, processor): 201 try: 202 gem5 = os.environ['M5_PATH'] + '/gem5/build/SPARC/gem5.fast' 203 if not os.path.exists(gem5): 204 raise Exception 205 except: 206 print("Did you forget to set M5_PATH?") 207 raise 208 209 thread.start_new_thread(gem5_console_thread, ()) 210 211 cmdline = gem5 + ' ' + os.environ['M5_PATH'] + '/configs/example/fs.py --disk-image=' + os.path.abspath('image.iso') 212 213 print(cmdline) 214 if not is_override('dry_run'): 215 subprocess.call(cmdline, shell = True) 182 216 183 217 emulators = { … … 223 257 'audio' : False 224 258 }, 259 'riscv64' : { 260 'run' : spike_run, 261 'image' : 'image.boot' 262 }, 225 263 'sparc64' : { 226 264 'generic' : { 227 'run' : qemu_run, 228 'image' : 'image.iso', 229 'audio' : False 265 'us' : { 266 'run' : qemu_run, 267 'image' : 'image.iso', 268 'audio' : False 269 }, 270 'sun4v' : { 271 'run' : gem5_run, 272 } 230 273 } 231 274 }, … … 243 286 print("-nosnd\tDisable sound, if applicable.") 244 287 print("-nousb\tDisable USB support, if applicable.") 288 289 def fail(platform, machine): 290 print("Cannot start emulation for the chosen configuration. (%s/%s)" % (platform, machine)) 291 245 292 246 293 def run(): … … 297 344 mach = '' 298 345 346 if 'PROCESSOR' in config.keys(): 347 processor = config['PROCESSOR'] 348 else: 349 processor = '' 350 299 351 try: 300 emu_run = cfg_get(platform, mach)['run'] 352 emu_run = cfg_get(platform, mach, processor)['run'] 353 emu_run(platform, mach, processor) 301 354 except: 302 print("Cannot start emulation for the chosen configuration. (%s/%s)" % (platform, mach))355 fail(platform, mach) 303 356 return 304 357 305 emu_run(platform, mach)306 307 358 run()
Note:
See TracChangeset
for help on using the changeset viewer.