mirror of
https://github.com/antonblanchard/microwatt.git
synced 2026-04-10 14:28:53 +00:00
core: Implement the setb instruction
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
This commit is contained in:
@@ -289,7 +289,7 @@ architecture behaviour of decode1 is
|
||||
2#0101111010# => (ALU, OP_POPCNT, NONE, NONE, RS, RA, '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- popcntw
|
||||
2#0010111010# => (ALU, OP_PRTY, NONE, NONE, RS, RA, '0', '0', '0', '0', ZERO, '0', is8B, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- prtyd
|
||||
2#0010011010# => (ALU, OP_PRTY, NONE, NONE, RS, RA, '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- prtyw
|
||||
-- 2#0010000000# setb
|
||||
2#0010000000# => (ALU, OP_SETB, NONE, NONE, NONE, RT, '1', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- setb
|
||||
2#0111110010# => (LDST, OP_TLBIE, NONE, NONE, NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- slbia
|
||||
2#0000011011# => (ALU, OP_SHL, NONE, RB, RS, RA, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC, '0', '0'), -- sld
|
||||
2#0000011000# => (ALU, OP_SHL, NONE, RB, RS, RA, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC, '0', '0'), -- slw
|
||||
|
||||
@@ -875,6 +875,15 @@ begin
|
||||
set_carry(v.e, rotator_carry, rotator_carry);
|
||||
end if;
|
||||
result_en := '1';
|
||||
when OP_SETB =>
|
||||
bfa := insn_bfa(e_in.insn);
|
||||
crbit := to_integer(unsigned(bfa)) * 4;
|
||||
result := (others => '0');
|
||||
if cr_in(31 - crbit) = '1' then
|
||||
result := (others => '1');
|
||||
elsif cr_in(30 - crbit) = '1' then
|
||||
result(0) := '1';
|
||||
end if;
|
||||
|
||||
when OP_ISYNC =>
|
||||
v.f.redirect := '1';
|
||||
|
||||
Reference in New Issue
Block a user