Adding syscall ISACaller test case (not working yet).
[openpower-isa.git] / src / openpower / test / syscall / syscall_cases.py
1 import random
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
12 #import gzip
13 #import json
14 #import sys
15 #from hashlib import sha256
16 #from functools import lru_cache
17
18 class SysCallTestCase(TestAccumulatorBase):
19 def case_sc(self):
20 lst = [f"sc"]
21 print(lst)
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)