2 from openpower
.test
.common
import TestAccumulatorBase
, skip_case
3 from openpower
.endian
import bigendian
4 from openpower
.simulator
.program
import Program
5 #from openpower.decoder.selectable_int import SelectableInt
6 #from openpower.decoder.power_enums import XER_bits
7 #from openpower.decoder.isa.caller import special_sprs
8 from openpower
.decoder
.helpers
import exts
9 from openpower
.test
.state
import ExpectedState
10 from openpower
.util
import log
11 from pathlib
import Path
15 #from hashlib import sha256
16 #from functools import lru_cache
18 class SysCallTestCase(TestAccumulatorBase
):
22 message
= b
'Hello world!\n'
23 message_len
= len(message
)
24 initial_regs
= [0] * 32
25 initial_regs
[0] = 4 # write syscall, see ppc64 ABI
26 initial_regs
[3] = 1 # fd = 1 (stdout)
27 # The example code stores bits 0-63 of the msg into r4
28 # but message is actually 13 bytes, so just store 8 for now
29 msg_8bytes
= int(message
[0:8].hex(), 16)
30 initial_regs
[4] = msg_8bytes
31 initial_regs
[5] = 8 # message_len
32 e
= ExpectedState(initial_regs
, pc
=4)
33 e
.intregs
[3] = 0x10000
34 self
.add_case(Program(lst
, bigendian
), initial_regs
, expected
=e
)