summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/sgi.h
blob: f164879d21e24b0a2fbc9d00e7b783fcdbb1a1fa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz
/*********************************************************************

    sgi.h

    Silicon Graphics MC (Memory Controller) code

*********************************************************************/

#ifndef _SGIMC_H
#define _SGIMC_H

class sgi_mc_device : public device_t
{
public:
	sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
	~sgi_mc_device() {}

DECLARE_READ32_MEMBER(read);
DECLARE_WRITE32_MEMBER(write);

protected:
	// device-level overrides
	virtual void device_start() override;

private:
	// internal state
	emu_timer *m_tUpdateTimer;
	uint32_t m_nCPUControl0;
	uint32_t m_nCPUControl1;
	uint32_t m_nWatchdog;
	uint32_t m_nSysID;
	uint32_t m_nRPSSDiv;
	uint32_t m_nRefCntPreload;
	uint32_t m_nRefCnt;
	uint32_t m_nGIO64ArbParam;
	uint32_t m_nArbCPUTime;
	uint32_t m_nArbBurstTime;
	uint32_t m_nMemCfg0;
	uint32_t m_nMemCfg1;
	uint32_t m_nCPUMemAccCfg;
	uint32_t m_nGIOMemAccCfg;
	uint32_t m_nCPUErrorAddr;
	uint32_t m_nCPUErrorStatus;
	uint32_t m_nGIOErrorAddr;
	uint32_t m_nGIOErrorStatus;
	uint32_t m_nSysSemaphore;
	uint32_t m_nGIOLock;
	uint32_t m_nEISALock;
	uint32_t m_nGIO64TransMask;
	uint32_t m_nGIO64Subst;
	uint32_t m_nDMAIntrCause;
	uint32_t m_nDMAControl;
	uint32_t m_nDMATLBEntry0Hi;
	uint32_t m_nDMATLBEntry0Lo;
	uint32_t m_nDMATLBEntry1Hi;
	uint32_t m_nDMATLBEntry1Lo;
	uint32_t m_nDMATLBEntry2Hi;
	uint32_t m_nDMATLBEntry2Lo;
	uint32_t m_nDMATLBEntry3Hi;
	uint32_t m_nDMATLBEntry3Lo;
	uint32_t m_nRPSSCounter;
	uint32_t m_nDMAMemAddr;
	uint32_t m_nDMALineCntWidth;
	uint32_t m_nDMALineZoomStride;
	uint32_t m_nDMAGIO64Addr;
	uint32_t m_nDMAMode;
	uint32_t m_nDMAZoomByteCnt;
	uint32_t m_nDMARunning;

	void update();
	TIMER_CALLBACK_MEMBER(update_callback);
	void timer_init();
};

extern const device_type SGI_MC;


#endif /* _SGIMC_H */