openpower.simulator package¶
Submodules¶
openpower.simulator.envcmds module¶
openpower.simulator.gas module¶
-
openpower.simulator.gas.
get_assembled_instruction
(instruction, bigendian=False)¶
openpower.simulator.program module¶
POWER Program
takes powerpc assembly instructions and turns them into LE/BE binary data. calls powerpc64-linux-gnu-as, ld and objcopy to do so.
openpower.simulator.qemu module¶
-
class
openpower.simulator.qemu.
QemuController
(kernel, bigendian)¶ Bases:
object
-
break_address
(addr)¶
-
connect
()¶
-
delete_breakpoint
(breakpoint=None)¶
-
exit
()¶
-
gdb_continue
()¶
-
gdb_eval
(expr)¶
-
get_cr
()¶
-
get_ctr
()¶
-
get_fpscr
()¶
-
get_lr
()¶
-
get_mem
(addr, nbytes)¶
-
get_mq
()¶
-
get_msr
()¶
-
get_pc
()¶
-
get_register
(num)¶
-
get_registers
()¶
-
get_xer
()¶
-
set_byte
(addr, v)¶
-
set_endian
(bigendian)¶
-
step
()¶
-
-
openpower.simulator.qemu.
run_program
(program, initial_mem=None, extra_break_addr=None, bigendian=False)¶
-
openpower.simulator.qemu.
swap_order
(x, nbytes)¶
openpower.simulator.test_div_sim module¶
-
class
openpower.simulator.test_div_sim.
DivDecoderTestCase
(name='div')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_div_sim.DivTestCases
-
class
openpower.simulator.test_div_sim.
DivTestCases
(name='div')¶ Bases:
nmutil.formaltest.FHDLTestCase
-
run_tst_program
(prog, initial_regs=None, initial_sprs=None, initial_mem=None)¶
-
test_0_divw
()¶
-
test_1_divw_
()¶
-
test_1_divwe
()¶
-
test_2_divw_
()¶
-
test_2_divweu
()¶
-
test_4_moduw
()¶
-
test_5_div_regression
()¶
-
test_data
= []¶
-
-
class
openpower.simulator.test_div_sim.
DivZeroDecoderTestCase
(name='divbyzero')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_div_sim.DivZeroTestCases
openpower.simulator.test_helloworld_sim module¶
-
class
openpower.simulator.test_helloworld_sim.
HelloDecoderTestCase
(name='div')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_helloworld_sim.HelloTestCases
openpower.simulator.test_mul_sim module¶
-
class
openpower.simulator.test_mul_sim.
MulDecoderTestCase
(name='div')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_mul_sim.MulTestCases
openpower.simulator.test_shift_sim module¶
-
class
openpower.simulator.test_shift_sim.
MulDecoderTestCase
(name='div')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_shift_sim.MulTestCases
openpower.simulator.test_sim module¶
-
class
openpower.simulator.test_sim.
AttnTestCase
(name='general')¶ Bases:
nmutil.formaltest.FHDLTestCase
-
run_tst_program
(prog, initial_regs=None, initial_sprs=None, initial_mem=None)¶
-
test_0_attn
()¶ simple test of attn. program is 4 long: should halt at 2nd op
-
test_data
= []¶
-
-
class
openpower.simulator.test_sim.
DecoderBase
¶ Bases:
object
-
qemu_mem_compare
(sim, qemu, check=True)¶
-
qemu_register_compare
(sim, qemu, regs)¶
-
run_tst
(generator, initial_mem=None, initial_pc=0)¶
-
run_tst_program
(prog, reglist, initial_mem=None, extra_break_addr=None)¶
-
-
class
openpower.simulator.test_sim.
DecoderTestCase
(name='general')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_sim.GeneralTestCases
-
class
openpower.simulator.test_sim.
GeneralTestCases
(name='general')¶ Bases:
nmutil.formaltest.FHDLTestCase
-
run_tst_program
(prog, initial_regs=None, initial_sprs=None, initial_mem=None)¶
-
test_0_cmp
()¶
-
test_0_ldst_widths
()¶
-
test_0_litex_bios_cmp
()¶ litex bios cmp test
-
test_0_litex_bios_ctr_loop
()¶ 32a4: ff ff 63 38 addi r3,r3,-1 32a8: 20 00 63 78 clrldi r3,r3,32 32ac: 01 00 23 39 addi r9,r3,1 32b0: a6 03 29 7d mtctr r9 32b4: 00 00 00 60 nop 32b8: fc ff 00 42 bdnz 32b4 <cdelay+0x10> 32bc: 20 00 80 4e blr
notes on converting pseudo-assembler to actual:
- bdnz target (equivalent to: bc 16,0,target)
- Clear left immediate clrldi ra,rs,n (n < 64) rldicl ra,rs,0,n
- CTR mtctr Rx mtspr 9,Rx
-
test_0_litex_bios_r1
()¶ litex bios IMM64 macro test
-
test_0_litex_trampoline
()¶
-
test_2_load_store
()¶
-
test_30_addis
()¶
-
test_31_addis
()¶ tests for zero not in register zero
-
test_3_load_store
()¶
-
test_add_with_carry
()¶
-
test_addis
()¶
-
test_crnand
()¶
-
test_crnand_2
()¶
-
test_crxor
()¶
-
test_crxor_2
()¶
-
test_data
= []¶
-
test_example
()¶
-
test_isel_1
()¶
-
test_isel_2
()¶
-
test_isel_3
()¶
-
test_ld_rev_ext
()¶
-
test_ldst
()¶
-
test_ldst_extended
()¶
-
test_ldst_update
()¶
-
test_loop
()¶ in godbolt.org: register unsigned long i asm (“r9”); void square(void) {
i = 16; do {
i = i - 1;} while (i != 12);
}
-
test_mulli
()¶
-
test_nop
()¶
-
test_st_rev_ext
()¶
-
test_sub
()¶
-
test_zero_illegal
()¶
-
openpower.simulator.test_trap_sim module¶
-
class
openpower.simulator.test_trap_sim.
TrapDecoderTestCase
(name='div')¶ Bases:
openpower.simulator.test_sim.DecoderBase
,openpower.simulator.test_trap_sim.TrapSimTestCases