tlb.hh (12406:86bde4a026b5) tlb.hh (12749:223c83ed9979)
1/*
2 * Copyright (c) 2011 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

72 */
73 virtual void markDelayed() = 0;
74
75 /*
76 * The memory for this object may be dynamically allocated, and it may
77 * be responsible for cleaning itself up which will happen in this
78 * function. Once it's called, the object is no longer valid.
79 */
1/*
2 * Copyright (c) 2011 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

72 */
73 virtual void markDelayed() = 0;
74
75 /*
76 * The memory for this object may be dynamically allocated, and it may
77 * be responsible for cleaning itself up which will happen in this
78 * function. Once it's called, the object is no longer valid.
79 */
80 virtual void finish(const Fault &fault, RequestPtr req,
80 virtual void finish(const Fault &fault, const RequestPtr &req,
81 ThreadContext *tc, Mode mode) = 0;
82
83 /** This function is used by the page table walker to determine if it
84 * should translate the a pending request or if the underlying request
85 * has been squashed.
86 * @ return Is the instruction that requested this translation squashed?
87 */
88 virtual bool squashed() const { return false; }
89 };
90
91 public:
92 virtual void demapPage(Addr vaddr, uint64_t asn) = 0;
93
94 virtual Fault translateAtomic(
81 ThreadContext *tc, Mode mode) = 0;
82
83 /** This function is used by the page table walker to determine if it
84 * should translate the a pending request or if the underlying request
85 * has been squashed.
86 * @ return Is the instruction that requested this translation squashed?
87 */
88 virtual bool squashed() const { return false; }
89 };
90
91 public:
92 virtual void demapPage(Addr vaddr, uint64_t asn) = 0;
93
94 virtual Fault translateAtomic(
95 RequestPtr req, ThreadContext *tc, Mode mode) = 0;
95 const RequestPtr &req, ThreadContext *tc, Mode mode) = 0;
96 virtual void translateTiming(
96 virtual void translateTiming(
97 RequestPtr req, ThreadContext *tc,
97 const RequestPtr &req, ThreadContext *tc,
98 Translation *translation, Mode mode) = 0;
99 virtual Fault
98 Translation *translation, Mode mode) = 0;
99 virtual Fault
100 translateFunctional(RequestPtr req, ThreadContext *tc, Mode mode)
100 translateFunctional(const RequestPtr &req, ThreadContext *tc, Mode mode)
101 {
102 panic("Not implemented.\n");
103 }
104
105 /**
106 * Do post-translation physical address finalization.
107 *
108 * This method is used by some architectures that need
109 * post-translation massaging of physical addresses. For example,
110 * X86 uses this to remap physical addresses in the APIC range to
111 * a range of physical memory not normally available to real x86
112 * implementations.
113 *
114 * @param req Request to updated in-place.
115 * @param tc Thread context that created the request.
116 * @param mode Request type (read/write/execute).
117 * @return A fault on failure, NoFault otherwise.
118 */
119 virtual Fault finalizePhysical(
101 {
102 panic("Not implemented.\n");
103 }
104
105 /**
106 * Do post-translation physical address finalization.
107 *
108 * This method is used by some architectures that need
109 * post-translation massaging of physical addresses. For example,
110 * X86 uses this to remap physical addresses in the APIC range to
111 * a range of physical memory not normally available to real x86
112 * implementations.
113 *
114 * @param req Request to updated in-place.
115 * @param tc Thread context that created the request.
116 * @param mode Request type (read/write/execute).
117 * @return A fault on failure, NoFault otherwise.
118 */
119 virtual Fault finalizePhysical(
120 RequestPtr req, ThreadContext *tc, Mode mode) const = 0;
120 const RequestPtr &req, ThreadContext *tc, Mode mode) const = 0;
121
122 /**
123 * Remove all entries from the TLB
124 */
125 virtual void flushAll() = 0;
126
127 /**
128 * Take over from an old tlb context

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

149 GenericTLB(const Params *p)
150 : BaseTLB(p)
151 {}
152
153 public:
154 void demapPage(Addr vaddr, uint64_t asn) override;
155
156 Fault translateAtomic(
121
122 /**
123 * Remove all entries from the TLB
124 */
125 virtual void flushAll() = 0;
126
127 /**
128 * Take over from an old tlb context

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

149 GenericTLB(const Params *p)
150 : BaseTLB(p)
151 {}
152
153 public:
154 void demapPage(Addr vaddr, uint64_t asn) override;
155
156 Fault translateAtomic(
157 RequestPtr req, ThreadContext *tc, Mode mode) override;
157 const RequestPtr &req, ThreadContext *tc, Mode mode) override;
158 void translateTiming(
158 void translateTiming(
159 RequestPtr req, ThreadContext *tc,
159 const RequestPtr &req, ThreadContext *tc,
160 Translation *translation, Mode mode) override;
161
162 Fault finalizePhysical(
160 Translation *translation, Mode mode) override;
161
162 Fault finalizePhysical(
163 RequestPtr req, ThreadContext *tc, Mode mode) const override;
163 const RequestPtr &req, ThreadContext *tc, Mode mode) const override;
164};
165
166#endif // __ARCH_GENERIC_TLB_HH__
164};
165
166#endif // __ARCH_GENERIC_TLB_HH__