[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH] decodetree: Allow custom var width load functions
From: |
Luis Fernando Fujita Pires |
Subject: |
RE: [PATCH] decodetree: Allow custom var width load functions |
Date: |
Tue, 13 Apr 2021 19:42:44 +0000 |
Please ignore this. I'll resend as part of a patch series.
-----Original Message-----
From: Luis Pires <luis.pires@eldorado.org.br>
Sent: terça-feira, 13 de abril de 2021 15:16
To: qemu-devel@nongnu.org
Cc: richard.henderson@linaro.org; qemu-ppc@nongnu.org; Luis Fernando Fujita
Pires <luis.pires@eldorado.org.br>
Subject: [PATCH] decodetree: Allow custom var width load functions
This is useful in situations where you want decodetree to handle variable width
instructions but you want to provide custom code to load the instructions.
Suppressing the generation of the load function is necessary to avoid
compilation errors due to the load function being unused.
This will be used by the PowerPC decodetree code.
Signed-off-by: Luis Pires <luis.pires@eldorado.org.br>
---
scripts/decodetree.py | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/scripts/decodetree.py b/scripts/decodetree.py index
fef5eeaf42..c88dbdb4c3 100644
--- a/scripts/decodetree.py
+++ b/scripts/decodetree.py
@@ -1277,9 +1277,10 @@ def main():
global anyextern
decode_scope = 'static '
+ noloadfunc = False
long_opts = ['decode=', 'translate=', 'output=', 'insnwidth=',
- 'static-decode=', 'varinsnwidth=']
+ 'static-decode=', 'varinsnwidth=', 'noloadfunc']
try:
(opts, args) = getopt.gnu_getopt(sys.argv[1:], 'o:vw:', long_opts)
except getopt.GetoptError as err:
@@ -1311,6 +1312,8 @@ def main():
deposit_function = 'deposit64'
elif insnwidth != 32:
error(0, 'cannot handle insns of width', insnwidth)
+ elif o == '--noloadfunc':
+ noloadfunc = True
else:
assert False, 'unhandled option'
@@ -1400,12 +1403,13 @@ def main():
output(i4, 'return false;\n')
output('}\n')
- if variablewidth:
- output('\n', decode_scope, insntype, ' ', decode_function,
- '_load(DisasContext *ctx)\n{\n',
- ' ', insntype, ' insn = 0;\n\n')
- stree.output_code(4, 0, 0, 0)
- output('}\n')
+ if not noloadfunc:
+ if variablewidth:
+ output('\n', decode_scope, insntype, ' ', decode_function,
+ '_load(DisasContext *ctx)\n{\n',
+ ' ', insntype, ' insn = 0;\n\n')
+ stree.output_code(4, 0, 0, 0)
+ output('}\n')
if output_file:
output_fd.close()
--
2.25.1