Line 228... |
Line 228... |
-- and stack pointer as well.
|
-- and stack pointer as well.
|
-- Seth Henry 05/24/20 Removed the Default_Int_Flag, as it is covered by
|
-- Seth Henry 05/24/20 Removed the Default_Int_Flag, as it is covered by
|
-- Supervisor_Mode. If Supervisor_Mode isn't set,
|
-- Supervisor_Mode. If Supervisor_Mode isn't set,
|
-- code can simply use STP to set the bit
|
-- code can simply use STP to set the bit
|
-- Seth Henry 06/09/20 Added ability to use unsigned index offsets for
|
-- Seth Henry 06/09/20 Added ability to use unsigned index offsets for
|
-- LDO/SDO. Also pipelined the address calculation
|
-- LDO/STO. Also pipelined the address calculation
|
-- for indexed instructions, reducing the final
|
-- for indexed instructions, reducing the final
|
-- address generator to a multiplexor fed only by
|
-- address generator to a multiplexor fed only by
|
-- registers.
|
-- registers.
|
|
|
library ieee;
|
library ieee;
|
Line 384... |
Line 384... |
|
|
-- The original model treated the offset to LDO/STO as a signed value
|
-- The original model treated the offset to LDO/STO as a signed value
|
-- allowing access to locations -128 to +127 from [Rn+1:Rn]. This isn't
|
-- allowing access to locations -128 to +127 from [Rn+1:Rn]. This isn't
|
-- always helpful, so the generic allows the CPU to use unsigned math
|
-- always helpful, so the generic allows the CPU to use unsigned math
|
-- for the offsets. This makes the range 0 to +255 instead.
|
-- for the offsets. This makes the range 0 to +255 instead.
|
|
|
Unsigned_Idx_Offsets : if( Unsigned_Index_Offsets )generate
|
Unsigned_Idx_Offsets : if( Unsigned_Index_Offsets )generate
|
IDX_Offset(15 downto 8) <= (others => '0');
|
IDX_Offset(15 downto 8) <= (others => '0');
|
IDX_Offset(7 downto 0) <= Operand1;
|
IDX_Offset(7 downto 0) <= Operand1;
|
end generate;
|
end generate;
|
|
|