2 def __init__(self
, program
, name
, regs
=None, sprs
=None, cr
=0, mem
=None,
22 def set_int_ra(alu
, dec2
, inp
):
24 yield alu
.p
.data_i
.ra
.eq(inp
['ra'])
26 yield alu
.p
.data_i
.ra
.eq(0)
28 def set_int_rb(alu
, dec2
, inp
):
29 yield alu
.p
.data_i
.rb
.eq(0)
31 yield alu
.p
.data_i
.rb
.eq(inp
['rb'])
32 # If there's an immediate, set the B operand to that
33 imm_ok
= yield dec2
.e
.imm_data
.imm_ok
35 data2
= yield dec2
.e
.imm_data
.imm
36 yield alu
.p
.data_i
.b
.eq(data2
)
38 def set_xer_ca(alu
, dec2
, inp
):
40 yield alu
.p
.data_i
.xer_ca
.eq(inp
['xer_ca'])
41 print ("extra inputs: CA/32", bin(inp
['xer_ca']))
43 def set_xer_so(alu
, dec2
, inp
):
46 print ("extra inputs: so", so
)
47 yield alu
.p
.data_i
.xer_so
.eq(so
)
49 def set_fast_cia(alu
, dec2
, inp
):
51 yield alu
.p
.data_i
.cia
.eq(inp
['cia'])
53 def set_fast_spr1(alu
, dec2
, inp
):
55 yield alu
.p
.data_i
.spr1
.eq(inp
['spr1'])
57 def set_fast_spr2(alu
, dec2
, inp
):
59 yield alu
.p
.data_i
.spr2
.eq(inp
['spr2'])
61 def set_cr_a(alu
, dec2
, inp
):
63 yield alu
.p
.data_i
.cr_a
.eq(inp
['cr_a'])
65 def set_cr_b(alu
, dec2
, inp
):
67 yield alu
.p
.data_i
.cr_b
.eq(inp
['cr_b'])
69 def set_cr_c(alu
, dec2
, inp
):
71 yield alu
.p
.data_i
.cr_c
.eq(inp
['cr_c'])
73 def set_full_cr(alu
, dec2
, inp
):
75 yield alu
.p
.data_i
.full_cr
.eq(inp
['full_cr'])
77 yield alu
.p
.data_i
.full_cr
.eq(0)