punk@1: signature Processor where { punk@1: import ¶Assert®¶; punk@1: punk@1: import ¶ConfigReg®¶; punk@1: punk@1: import ¶Counter®¶; punk@1: punk@1: import ¶FIFOF_®¶; punk@1: punk@1: import ¶FIFOF®¶; punk@1: punk@1: import ¶FIFO®¶; punk@1: punk@1: import ¶Inout®¶; punk@1: punk@1: import ¶List®¶; punk@1: punk@1: import BFIFO; punk@1: punk@1: import ¶Clocks®¶; punk@1: punk@1: import ¶ListN®¶; punk@1: punk@1: import ¶Monad®¶; punk@1: punk@1: import ¶PrimArray®¶; punk@1: punk@1: import ¶RWire®¶; punk@1: punk@1: import ¶RegFile®¶; punk@1: punk@1: import SFIFO; punk@1: punk@1: import ¶Vector®¶; punk@1: punk@1: import ¶Connectable®¶; punk@1: punk@1: import ¶GetPut®¶; punk@1: punk@1: import ¶ClientServer®¶; punk@1: punk@1: import Trace; punk@1: punk@1: import MemTypes; punk@1: punk@1: import ProcTypes; punk@1: punk@1: import BRegFile; punk@1: punk@1: import BranchPred; punk@1: punk@1: interface (Processor.ProcStats :: *) = { punk@1: Processor.num_cycles :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat; punk@1: Processor.num_inst :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat punk@1: }; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.ProcStats; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.ProcStats; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.ProcStats; punk@1: punk@1: interface (Processor.CPUToHost :: *) = { punk@1: Processor.cpuToHost :: ¶Prelude®¶.¶Int®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32 {-# arg_names = [req] #-} punk@1: }; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.CPUToHost; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.CPUToHost; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.CPUToHost; punk@1: punk@1: interface (Processor.Proc :: *) = { punk@1: Processor.dmem_client :: ¶ClientServer®¶.¶Client®¶ MemTypes.DataReq MemTypes.DataResp; punk@1: Processor.imem_client :: ¶ClientServer®¶.¶Client®¶ MemTypes.InstReq MemTypes.InstResp; punk@1: Processor.statsEn_get :: ¶GetPut®¶.¶Get®¶ ¶Prelude®¶.¶Bool®¶; punk@1: Processor.stats :: Processor.ProcStats; punk@1: Processor.tohost :: Processor.CPUToHost punk@1: }; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.Proc; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.Proc; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.Proc; punk@1: punk@1: data (Processor.Stage :: *) = Processor.PCgen () | Processor.Exec () | Processor.Writeback (); punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.Stage; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.Stage; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.Stage; punk@1: punk@1: instance Processor ¶Prelude®¶.¶Eq®¶ Processor.Stage; punk@1: punk@1: instance Processor ¶Prelude®¶.¶Bits®¶ Processor.Stage 2; punk@1: punk@1: interface (Processor.BRFile :: *) = { punk@1: Processor.wr :: ProcTypes.Rindx -> punk@1: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Action®¶ {-# arg_names = [rindx, ¡data¡] #-}; punk@1: Processor.rd1 :: ProcTypes.Rindx -> ¶Prelude®¶.¶Bit®¶ 32 {-# arg_names = [rindx] #-}; punk@1: Processor.rd2 :: ProcTypes.Rindx -> ¶Prelude®¶.¶Bit®¶ 32 {-# arg_names = [rindx] #-} punk@1: }; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.BRFile; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.BRFile; punk@1: punk@1: instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.BRFile; punk@1: punk@1: Processor.mkBRFile :: (¶Prelude®¶.¶IsModule®¶ _m__ _c__) => _m__ Processor.BRFile; punk@1: punk@1: Processor.slt :: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32; punk@1: punk@1: Processor.sltu :: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32; punk@1: punk@1: Processor.rshft :: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32; punk@1: punk@1: Processor.findwbf :: ProcTypes.Rindx -> ProcTypes.WBResult -> ¶Prelude®¶.¶Bool®¶; punk@1: punk@1: Processor.stall :: ProcTypes.Instr -> punk@1: SFIFO.SFIFO ProcTypes.WBResult ProcTypes.Rindx -> ¶Prelude®¶.¶Bool®¶; punk@1: punk@1: Processor.mkProc :: (¶Prelude®¶.¶IsModule®¶ _m__ _c__) => _m__ Processor.Proc punk@1: }