Line 12... |
Line 12... |
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
-- Please read file /doc/ion_project.txt for usage instructions.
|
-- Please read file /doc/ion_project.txt for usage instructions.
|
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
--### MIPS-I things not implemented
|
--### MIPS-I things not implemented
|
--
|
--
|
-- 1.- RTE instruction (or ERET) missing, with CP0.SR KUo/IEo & KUP/IEp flags.
|
-- 1.- Most of the R3000 CP0 registers and of course all of the CP1.
|
-- 2.- Most of the R3000 CP0 registers and of course all of the CP1.
|
-- 2.- External interrupts missing, with CP0.SR IR, NMI and IM7..0 flags.
|
-- 3.- External interrupts missing, with CP0.SR IR, NMI and IM7..0 flags.
|
|
--
|
--
|
--### Things with provisional implementation
|
--### Things with provisional implementation
|
--
|
--
|
-- 1.- Load interlocks: the pipeline is stalled for every load instruction, even
|
-- 1.- Load interlocks: the pipeline is stalled for every load instruction, even
|
-- if the target register is not used in the following instruction. So that
|
-- if the target register is not used in the following instruction. So that
|
Line 34... |
Line 33... |
-- BUT there's no address checking and user code can still access kernel
|
-- BUT there's no address checking and user code can still access kernel
|
-- space in this version.
|
-- space in this version.
|
-- Besides, see point 2 above about the missing SR bits.
|
-- Besides, see point 2 above about the missing SR bits.
|
--
|
--
|
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
|
-- KNOWN BUGS:
|
|
--
|
|
-- 1.- The instruction after entering user mode (i.e. the instruction after the
|
|
-- MTC0 or RFE that clears the KU flag) is executed in kernel mode.
|
|
-- This can be easily fixed but is not very urgent.
|
|
--------------------------------------------------------------------------------
|
|
|
library ieee;
|
library ieee;
|
use ieee.std_logic_1164.all;
|
use ieee.std_logic_1164.all;
|
use ieee.std_logic_arith.all;
|
use ieee.std_logic_arith.all;
|
use ieee.std_logic_unsigned.all;
|
use ieee.std_logic_unsigned.all;
|