tlb.hh (5891:73084c6bb183) tlb.hh (5894:8091ac99341a)
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

--- 124 unchanged lines hidden (view full) ---

133 int size;
134
135 TlbEntry * tlb;
136
137 EntryList freeList;
138 EntryList entryList;
139
140 template<class TlbFault>
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

--- 124 unchanged lines hidden (view full) ---

133 int size;
134
135 TlbEntry * tlb;
136
137 EntryList freeList;
138 EntryList entryList;
139
140 template<class TlbFault>
141 Fault translateAtomic(RequestPtr &req, ThreadContext *tc,
141 Fault translateAtomic(RequestPtr req, ThreadContext *tc,
142 bool write, bool execute);
142 bool write, bool execute);
143 void translateTiming(RequestPtr req, ThreadContext *tc,
144 Translation *translation, bool write, bool execute);
143
144 public:
145
146 void insert(Addr vpn, TlbEntry &entry);
147
148 // Checkpointing
149 virtual void serialize(std::ostream &os);
150 virtual void unserialize(Checkpoint *cp, const std::string &section);
151 };
152
153 class ITB : public TLB
154 {
155 public:
156 typedef X86ITBParams Params;
157 ITB(const Params *p) : TLB(p)
158 {
159 _allowNX = false;
160 }
161
145
146 public:
147
148 void insert(Addr vpn, TlbEntry &entry);
149
150 // Checkpointing
151 virtual void serialize(std::ostream &os);
152 virtual void unserialize(Checkpoint *cp, const std::string &section);
153 };
154
155 class ITB : public TLB
156 {
157 public:
158 typedef X86ITBParams Params;
159 ITB(const Params *p) : TLB(p)
160 {
161 _allowNX = false;
162 }
163
162 Fault translateAtomic(RequestPtr &req, ThreadContext *tc);
164 Fault translateAtomic(RequestPtr req, ThreadContext *tc);
165 void translateTiming(RequestPtr req, ThreadContext *tc,
166 Translation *translation);
163
164 friend class DTB;
165 };
166
167 class DTB : public TLB
168 {
169 public:
170 typedef X86DTBParams Params;
171 DTB(const Params *p) : TLB(p)
172 {
173 _allowNX = true;
174 }
167
168 friend class DTB;
169 };
170
171 class DTB : public TLB
172 {
173 public:
174 typedef X86DTBParams Params;
175 DTB(const Params *p) : TLB(p)
176 {
177 _allowNX = true;
178 }
175 Fault translateAtomic(RequestPtr &req, ThreadContext *tc, bool write);
179 Fault translateAtomic(RequestPtr req, ThreadContext *tc, bool write);
180 void translateTiming(RequestPtr req, ThreadContext *tc,
181 Translation *translation, bool write);
176#if FULL_SYSTEM
177 Tick doMmuRegRead(ThreadContext *tc, Packet *pkt);
178 Tick doMmuRegWrite(ThreadContext *tc, Packet *pkt);
179#endif
180
181 // Checkpointing
182 virtual void serialize(std::ostream &os);
183 virtual void unserialize(Checkpoint *cp, const std::string &section);
184 };
185}
186
187#endif // __ARCH_X86_TLB_HH__
182#if FULL_SYSTEM
183 Tick doMmuRegRead(ThreadContext *tc, Packet *pkt);
184 Tick doMmuRegWrite(ThreadContext *tc, Packet *pkt);
185#endif
186
187 // Checkpointing
188 virtual void serialize(std::ostream &os);
189 virtual void unserialize(Checkpoint *cp, const std::string &section);
190 };
191}
192
193#endif // __ARCH_X86_TLB_HH__