1using sysbus
2$name?="fsl-lx2160a-rdb"
3mach create $name
4$bin?=@https://dl.antmicro.com/projects/renode/lx2160ardb_tfa--fsl-lx2160a-rdb-uboot.elf-s_6536168-1086a07768d4a4e6b1a7f80bd2d9c0e6444c0a2b
5machine LoadPlatformDescription @platforms/boards/fsl_lx2160ardb.repl
6showAnalyzer uart0
7
8macro reset
9"""
10    cpu0 StubPSCICalls true
11    sysbus LoadELF $bin
12"""
13
14# This handler stubs the `smc` SIP call 0xff12 (SIP_SVC_MEM_BANK)
15# atf implementation can be found here:
16# https://github.com/Xilinx/arm-trusted-firmware/blob/e4a37b000fb9a708112da1e06da0e8fad939dc86/plat/nxp/common/sip_svc/sip_svc.c#L115
17# Basically it returns available dram regions size
18cpu0 AddCustomPSCIStub 0xc200ff12 """
19from Antmicro.Renode.Peripherals.CPU import RegisterValue
20
21x1 = self.GetRegisterUlong(1)
22if x1 == 0xFFFFFFFFFFFFFFFF:
23    self.SetRegisterUlong(1, 0x80002000)
24    self.SetRegisterUlong(0, 0x0)
25elif x1 == 0:
26    self.SetRegisterUlong(1, 0x80000000)
27    self.SetRegisterUlong(2, 0x80000000)
28    self.SetRegisterUlong(0, 0)
29elif x1 == 1:
30    self.SetRegisterUlong(1, 0x1080000)
31    self.SetRegisterUlong(2, 0x1000)
32    self.SetRegisterUlong(0, 0)
33elif x1 == 2:
34    self.SetRegisterUlong(1, 0x1090000)
35    self.SetRegisterUlong(2, 0x1000)
36    self.SetRegisterUlong(0, 0)
37else:
38    self.SetRegisterUlong(0, 0xFFFFFFFFFFFFFFFF)
39"""
40
41runMacro $reset
42