forked from Github_Repos/cvw
29 lines
1.2 KiB
Python
Executable File
29 lines
1.2 KiB
Python
Executable File
#! /usr/bin/python3
|
|
import sys, fileinput
|
|
|
|
sys.stderr.write("reminder: fix_csrs.py is nothing but hardcoded hackery to combat QEMU's faulty printing")
|
|
|
|
csrs = ['fcsr','mcause','mcounteren','medeleg','mepc','mhartid','mideleg','mie','mip','misa','mscratch','mstatus','mtval','mtvec','pmpaddr0','pmpcfg0','satp','scause','scounteren','sepc','sie','sscratch','sstatus','stval','stvec']
|
|
|
|
# just for now, since these CSRs aren't yet ready to be checked in testbench-linux
|
|
list(map(csrs.remove, ['fcsr','mhartid','pmpcfg0','pmpaddr0','mip']))
|
|
output_path = sys.argv[1]+'/'
|
|
print(f'output dir: {output_path}')
|
|
count = 0
|
|
csr = ''
|
|
with open('{}parsedCSRs.txt'.format(output_path), 'w') as fixedCSRs:
|
|
with open('{}/intermediate-outputs/unfixedParsedCSRs.txt'.format(output_path), 'r') as rawCSRs:
|
|
for l in rawCSRs:
|
|
fixedCSRs.write(l)
|
|
count += 1
|
|
if '---' in l:
|
|
count = 0
|
|
if (count%2 == 1): # every other line is CSR name
|
|
csr = l
|
|
else:
|
|
if ('stval' in csr) and ('8020007e' in l):
|
|
print('Adding stvec vector')
|
|
fixedCSRs.write('stvec\n')
|
|
fixedCSRs.write('ffffffff800000b0\n')
|
|
|