---------------------------------------------------------------------- -- FILE: CPU.hs -- DATE: 02/18/2001 -- PROJECT: HARM (was VARM (Virtual ARM)), for CSE240 Spring 2001 -- LANGUAGE PLATFORM: HUGS -- OS PLATFORM: RedHat Linux 6.2 -- AUTHOR: Jeffrey A. Meunier -- EMAIL: jeffm@cse.uconn.edu -- MAINTAINER: Alex Mason -- EMAIL: axman6@gmail.com ---------------------------------------------------------------------- module Arm.CPU where ---------------------------------------------------------------------- -- Standard libraries. ---------------------------------------------------------------------- import Data.IORef ---------------------------------------------------------------------- -- Local libraries. ---------------------------------------------------------------------- import Arm.Memory import Arm.Register ---------------------------------------------------------------------- -- CPU data type. ---------------------------------------------------------------------- data CPU = CPU { memory :: Memory , registers :: Registers , running :: IORef Bool , debug :: IORef Bool } ---------------------------------------------------------------------- -- Create an empty CPU given a memory size. ---------------------------------------------------------------------- emptyCPU :: Address -> IO CPU emptyCPU memSize = do mem <- emptyMem memSize regs <- emptyRegs run <- newIORef True dbg <- newIORef False return CPU { memory = mem , registers = regs , running = run , debug = dbg } ---------------------------------------------------------------------- -- eof ----------------------------------------------------------------------