[Libre-soc-dev] bug in libre-soc "modsd" and possibly in microwatt as well
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Sat Aug 22 14:20:51 BST 2020
paul, mikey, ben: i am running a step-and-diff of the "1.bin" unit
test, and ran into a discrepancy where none of the values match up for
the following test:
lst = [f"modsd 17, 27, 0"]
initial_regs = [0] * 32
initial_regs[0] = 0xff
initial_regs[27] = 0x7fffffffffffffff
this is the following instruction which can be found in 1.bin:
103dc: 12 06 3b 7e modsd r17,r27,r0
the full dump can be found with the following command:
lkcl at fizzy:~/src/libresoc/microwatt/tests$
powerpc64le-linux-gnu-objdump --disassemble-zeroes -m powerpc -D -b
binary -EL 1.bin > 1.dump
the results are as follows:
* our program instruction analyzer returns 0x7f
* microwatt seems to return 0x1 (although there is "delay" in
single-stepping which is causing problems)
* the libre-soc pipelined DIV unit returns 0x7f
* the libre-soc "simulator-only" version of the DIV unit returns 0x7f
* the libre-soc FSM DIV unit returns 0x0
also in favour of the answer being 127 (0x7f) is the following python
calculation:
>>> 0x7fffffffffffffff % 255
127
which is correct? :)
l.
More information about the Libre-soc-dev
mailing list