44 lines
2.3 KiB
Plaintext
44 lines
2.3 KiB
Plaintext
|
|
*** Variables ***
|
||
|
|
${MEM} 0x0
|
||
|
|
${LOG_TIMEOUT} 1
|
||
|
|
|
||
|
|
*** Keywords ***
|
||
|
|
Create Machine
|
||
|
|
Execute Command mach create
|
||
|
|
Execute Command machine LoadPlatformDescriptionFromString "mem: Memory.ArrayMemory @ sysbus ${MEM} { size: 0x1000 }"
|
||
|
|
|
||
|
|
Test Peripheral Read Write Hook
|
||
|
|
[Arguments] ${size} ${writeValue} ${expectedOutput}
|
||
|
|
Execute Command sysbus SetHookBeforePeripheralWrite sysbus.mem "self.Log(LogLevel.Info, 'written: 0x{0:x}', value)"
|
||
|
|
Execute Command sysbus Write${size} ${MEM} ${writeValue}
|
||
|
|
Wait For Log Entry written: ${expectedOutput}
|
||
|
|
Execute Command sysbus SetHookBeforePeripheralWrite sysbus.mem ""
|
||
|
|
|
||
|
|
Execute Command sysbus SetHookAfterPeripheralRead sysbus.mem "self.Log(LogLevel.Info, 'read: 0x{0:x}', value)"
|
||
|
|
Execute Command sysbus Read${size} ${MEM}
|
||
|
|
Wait For Log Entry read: ${expectedOutput}
|
||
|
|
Execute Command sysbus SetHookAfterPeripheralRead sysbus.mem ""
|
||
|
|
|
||
|
|
*** Test Cases ***
|
||
|
|
Should Handle Peripheral Read Write Hooks
|
||
|
|
Create Machine
|
||
|
|
Create Log Tester ${LOG_TIMEOUT}
|
||
|
|
Start Emulation
|
||
|
|
Test Peripheral Read Write Hook Byte 0x2b 0x2b
|
||
|
|
Test Peripheral Read Write Hook Byte 0xff 0xff
|
||
|
|
Test Peripheral Read Write Hook Byte 0x100 0x0
|
||
|
|
|
||
|
|
Test Peripheral Read Write Hook Word 0xdead 0xdead
|
||
|
|
Test Peripheral Read Write Hook Word 0xffff 0xffff
|
||
|
|
Test Peripheral Read Write Hook Word 0x10000 0x0
|
||
|
|
|
||
|
|
Test Peripheral Read Write Hook DoubleWord 0xdeadbeef 0xdeadbeef
|
||
|
|
Test Peripheral Read Write Hook DoubleWord 0xffffffff 0xffffffff
|
||
|
|
Test Peripheral Read Write Hook DoubleWord 0x100000000 0x0
|
||
|
|
|
||
|
|
Test Peripheral Read Write Hook QuadWord 0x1234facedeadbabe 0x1234facedeadbabe
|
||
|
|
# Test Peripheral Read Write Hook QuadWord 0xffffffffffffffff 0xffffffffffffffff
|
||
|
|
# Test Peripheral Read Write Hook QuadWord 0x10000000000000000 0x0
|
||
|
|
# As of writing this, Monitor does not support parsing UInt64. Once support
|
||
|
|
# is added, please uncomment the above two tests.
|