161 lines
6.2 KiB
Plaintext
161 lines
6.2 KiB
Plaintext
*** Variables ***
|
|
${REPL}= SEPARATOR=
|
|
... """ ${\n}
|
|
... nvic: IRQControllers.NVIC @ { ${\n}
|
|
... sysbus new Bus.BusPointRegistration { address: 0xe000e000; cpu: cpu } ${\n}
|
|
... } ${\n}
|
|
... ${SPACE*4}-> cpu@0 ${\n}
|
|
... ${\n}
|
|
... cpu: CPU.CortexM @ sysbus ${\n}
|
|
... ${SPACE*4}cpuType: "cortex-m7" ${\n}
|
|
... ${SPACE*4}nvic: nvic ${\n}
|
|
... """
|
|
|
|
*** Keywords ***
|
|
Create Machine
|
|
Execute Command using sysbus
|
|
Execute Command mach create
|
|
Execute Command machine LoadPlatformDescriptionFromString ${REPL}
|
|
Execute Command cpu ExecutionMode SingleStep
|
|
Execute Command cpu PC 0x0
|
|
Execute Command machine LoadPlatformDescriptionFromString "mem: Memory.MappedMemory @ sysbus 0x0 { size: 0x8000000 }"
|
|
|
|
*** Test Cases ***
|
|
Signed Byte Addition Should Set GE Flag If And Only If The Result Is Greater Or Equal To Zero (sadd8)
|
|
${prog}= Catenate SEPARATOR=\n
|
|
... movw r0, #0x0000
|
|
... movt r0, #0x0000
|
|
... movw r1, #0xFFFF
|
|
... movt r1, #0xFFFF
|
|
... movw r2, #0x0C0A
|
|
... movt r2, #0x0C0A
|
|
... movw r3, #0xF5F5
|
|
... movt r3, #0xF5F5
|
|
... sadd8 r2, r2, r3
|
|
... sel r4, r1, r0
|
|
|
|
Create Machine
|
|
|
|
Execute Command sysbus.cpu AssembleBlock 0 "${prog}"
|
|
|
|
Execute Command cpu Step 10
|
|
|
|
${ret}= Execute Command sysbus.cpu GetRegister "R4"
|
|
|
|
Should Be Equal As Numbers ${ret} 0xFF00FF00
|
|
|
|
Signed Word Addition Should Set GE Flag If And Only If The Result Is Greater Or Equal To Zero (sadd16)
|
|
${prog}= Catenate SEPARATOR=\n
|
|
... movw r0, #0x0000
|
|
... movt r0, #0x0000
|
|
... movw r1, #0xFFFF
|
|
... movt r1, #0xFFFF
|
|
... movw r2, #0x0A23
|
|
... movt r2, #0x0A25
|
|
... movw r3, #0xF123
|
|
... movt r3, #0xFAA2
|
|
... sadd16 r2, r2, r3
|
|
... sel r4, r1, r0
|
|
|
|
Create Machine
|
|
|
|
Execute Command sysbus.cpu AssembleBlock 0 "${prog}"
|
|
|
|
Execute Command cpu Step 10
|
|
|
|
${ret}= Execute Command sysbus.cpu GetRegister "R4"
|
|
|
|
Should Be Equal As Numbers ${ret} 0xFFFF0000
|
|
|
|
Signed Byte Subtraction Should Set GE Flag If And Only If The Result Is Greater Or Equal To Zero (ssub8)
|
|
${prog}= Catenate SEPARATOR=\n
|
|
... movw r0, #0x0000
|
|
... movt r0, #0x0000
|
|
... movw r1, #0xFFFF
|
|
... movt r1, #0xFFFF
|
|
... movw r2, #0x0A0C
|
|
... movt r2, #0x0A0C
|
|
... movw r3, #0x0B0B
|
|
... movt r3, #0x0B0B
|
|
... ssub8 r2, r2, r3
|
|
... sel r4, r1, r0
|
|
|
|
Create Machine
|
|
|
|
Execute Command sysbus.cpu AssembleBlock 0 "${prog}"
|
|
|
|
Execute Command cpu Step 10
|
|
|
|
${ret}= Execute Command sysbus.cpu GetRegister "R4"
|
|
|
|
Should Be Equal As Numbers ${ret} 0x00FF00FF
|
|
|
|
Signed Word Subtraction Should Set GE Flag If And Only If The Result Is Greater Or Equal To Zero (ssub16)
|
|
${prog}= Catenate SEPARATOR=\n
|
|
... movw r0, #0x0000
|
|
... movt r0, #0x0000
|
|
... movw r1, #0xFFFF
|
|
... movt r1, #0xFFFF
|
|
... movw r2, #0x0A25
|
|
... movt r2, #0x0A23
|
|
... movw r3, #0x0A24
|
|
... movt r3, #0x0A24
|
|
... ssub16 r2, r2, r3
|
|
... sel r4, r1, r0
|
|
|
|
Create Machine
|
|
|
|
Execute Command sysbus.cpu AssembleBlock 0 "${prog}"
|
|
|
|
Execute Command cpu Step 10
|
|
|
|
${ret}= Execute Command sysbus.cpu GetRegister "R4"
|
|
|
|
Should Be Equal As Numbers ${ret} 0x0000FFFF
|
|
|
|
Unsigned Byte Subtraction Should Set GE Flag If And Only If The Result Is Greater Or Equal To Zero (usub8)
|
|
${prog}= Catenate SEPARATOR=\n
|
|
... movw r0, #0x0000
|
|
... movt r0, #0x0000
|
|
... movw r1, #0xFFFF
|
|
... movt r1, #0xFFFF
|
|
... movw r2, #0x0A0C
|
|
... movt r2, #0x0C0A
|
|
... movw r3, #0x0B0B
|
|
... movt r3, #0x0B0B
|
|
... ssub8 r2, r2, r3
|
|
... sel r4, r1, r0
|
|
|
|
Create Machine
|
|
|
|
Execute Command sysbus.cpu AssembleBlock 0 "${prog}"
|
|
|
|
Execute Command cpu Step 10
|
|
|
|
${ret}= Execute Command sysbus.cpu GetRegister "R4"
|
|
|
|
Should Be Equal As Numbers ${ret} 0xFF0000FF
|
|
|
|
Unsigned Word Subtraction Should Set GE Flag If And Only If The Result Is Greater Or Equal To Zero (usub16)
|
|
${prog}= Catenate SEPARATOR=\n
|
|
... movw r0, #0x0000
|
|
... movt r0, #0x0000
|
|
... movw r1, #0xFFFF
|
|
... movt r1, #0xFFFF
|
|
... movw r2, #0x0A25
|
|
... movt r2, #0x0A23
|
|
... movw r3, #0x0A24
|
|
... movt r3, #0x0A24
|
|
... usub16 r2, r2, r3
|
|
... sel r4, r1, r0
|
|
|
|
Create Machine
|
|
|
|
Execute Command sysbus.cpu AssembleBlock 0 "${prog}"
|
|
|
|
Execute Command cpu Step 10
|
|
|
|
${ret}= Execute Command sysbus.cpu GetRegister "R4"
|
|
|
|
Should Be Equal As Numbers ${ret} 0x0000FFFF
|