1 /* CPU class elements for ms1.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 2000-2005 Red Hat, Inc.
7 This file is part of the Red Hat simulators.
12 // This file is included in the middle of the cpu class struct.
16 // CPU state information.
20 /* special-purpose registers */
26 void stream_cgen_hardware (std::ostream &ost) const
28 for (int i = 0; i < 16; i++)
29 ost << hardware.h_spr[i] << ' ';
30 ost << hardware.h_pc << ' ';
32 void destream_cgen_hardware (std::istream &ist)
34 for (int i = 0; i < 16; i++)
35 ist >> hardware.h_spr[i];
38 template <typename ST>
39 void stream_stacks (const ST &st, std::ostream &ost) const
41 for (int i = 0; i < ms1::pipe_sz; i++)
43 ost << st[i].t << ' ';
44 for (int j = 0; j <= st[i].t; j++)
46 ost << st[i].buf[j].pc << ' ';
47 ost << st[i].buf[j].val << ' ';
48 ost << st[i].buf[j].idx0 << ' ';
53 template <typename ST>
54 void destream_stacks (ST &st, std::istream &ist)
56 for (int i = 0; i < ms1::pipe_sz; i++)
59 for (int j = 0; j <= st[i].t; j++)
61 ist >> st[i].buf[j].pc;
62 ist >> st[i].buf[j].val;
63 ist >> st[i].buf[j].idx0;
68 void stream_cgen_write_stacks (std::ostream &ost, const ms1::write_stacks &stacks) const
70 stream_stacks ( stacks.h_spr_writes, ost);
71 stream_stacks ( stacks.h_pc_writes, ost);
72 stream_stacks ( stacks.BI_memory_writes, ost);
73 stream_stacks ( stacks.QI_memory_writes, ost);
74 stream_stacks ( stacks.HI_memory_writes, ost);
75 stream_stacks ( stacks.SI_memory_writes, ost);
76 stream_stacks ( stacks.DI_memory_writes, ost);
77 stream_stacks ( stacks.UQI_memory_writes, ost);
78 stream_stacks ( stacks.UHI_memory_writes, ost);
79 stream_stacks ( stacks.USI_memory_writes, ost);
80 stream_stacks ( stacks.UDI_memory_writes, ost);
81 stream_stacks ( stacks.SF_memory_writes, ost);
82 stream_stacks ( stacks.DF_memory_writes, ost);
84 void destream_cgen_write_stacks (std::istream &ist, ms1::write_stacks &stacks)
86 destream_stacks ( stacks.h_spr_writes, ist);
87 destream_stacks ( stacks.h_pc_writes, ist);
88 destream_stacks ( stacks.BI_memory_writes, ist);
89 destream_stacks ( stacks.QI_memory_writes, ist);
90 destream_stacks ( stacks.HI_memory_writes, ist);
91 destream_stacks ( stacks.SI_memory_writes, ist);
92 destream_stacks ( stacks.DI_memory_writes, ist);
93 destream_stacks ( stacks.UQI_memory_writes, ist);
94 destream_stacks ( stacks.UHI_memory_writes, ist);
95 destream_stacks ( stacks.USI_memory_writes, ist);
96 destream_stacks ( stacks.UDI_memory_writes, ist);
97 destream_stacks ( stacks.SF_memory_writes, ist);
98 destream_stacks ( stacks.DF_memory_writes, ist);
100 // C++ register access function templates
101 #define current_cpu this
103 inline SI h_spr_get (UINT regno) const { return this->hardware.h_spr[regno]; }
104 inline void h_spr_set (UINT regno, SI newval) { this->hardware.h_spr[regno] = newval; }
106 inline USI h_pc_get () const { return this->hardware.h_pc; }
107 inline void h_pc_set (USI newval) { this->hardware.h_pc = newval; }