OSDN Git Service

* mmap.cc (gen_create_protect): Always generate WRITECOPY protection
[pf3gnuchains/pf3gnuchains4x.git] / sid / component / cgen-cpu / mt / mt-cpu.h
1 /* CPU class elements for ms1.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 2000-2005 Red Hat, Inc.
6
7 This file is part of the Red Hat simulators.
8
9
10 */
11
12 // This file is included in the middle of the cpu class struct.
13
14 public:
15
16 // CPU state information.
17
18   // Hardware elements.
19   struct {
20   /* special-purpose registers */
21   SI h_spr[16];
22   /* program counter */
23   USI h_pc;
24   } hardware;
25
26   void stream_cgen_hardware (std::ostream &ost) const 
27   {
28     for (int i = 0; i < 16; i++)
29       ost << hardware.h_spr[i] << ' ';
30     ost << hardware.h_pc << ' ';
31   }
32   void destream_cgen_hardware (std::istream &ist) 
33   {
34     for (int i = 0; i < 16; i++)
35       ist >> hardware.h_spr[i];
36     ist >> hardware.h_pc;
37   }
38   template <typename ST> 
39   void stream_stacks (const ST &st, std::ostream &ost) const
40   {
41     for (int i = 0; i < ms1::pipe_sz; i++)
42     {
43       ost << st[i].t << ' ';
44       for (int j = 0; j <= st[i].t; j++)
45       {
46         ost << st[i].buf[j].pc << ' ';
47         ost << st[i].buf[j].val << ' ';
48         ost << st[i].buf[j].idx0 << ' ';
49       }
50     }
51   }
52   
53   template <typename ST> 
54   void destream_stacks (ST &st, std::istream &ist)
55   {
56     for (int i = 0; i < ms1::pipe_sz; i++)
57     {
58       ist >> st[i].t;
59       for (int j = 0; j <= st[i].t; j++)
60       {
61         ist >> st[i].buf[j].pc;
62         ist >> st[i].buf[j].val;
63         ist >> st[i].buf[j].idx0;
64       }
65     }
66   }
67   
68   void stream_cgen_write_stacks (std::ostream &ost, const ms1::write_stacks &stacks) const 
69   {
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);
83   }
84   void destream_cgen_write_stacks (std::istream &ist, ms1::write_stacks &stacks) 
85   {
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);
99   }
100   // C++ register access function templates
101 #define current_cpu this
102
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; }
105
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; }
108
109 #undef current_cpu
110