aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/lib64/dbg.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/lib64/dbg.c')
-rw-r--r--arch/sh/lib64/dbg.c48
1 files changed, 0 insertions, 48 deletions
diff --git a/arch/sh/lib64/dbg.c b/arch/sh/lib64/dbg.c
index 25f2481bd89e..6152a6a6d9c6 100644
--- a/arch/sh/lib64/dbg.c
+++ b/arch/sh/lib64/dbg.c
@@ -246,51 +246,3 @@ void show_excp_regs(char *from, int trapnr, int signr, struct pt_regs *regs)
246 print_dtlb(); 246 print_dtlb();
247 print_itlb(); 247 print_itlb();
248} 248}
249
250/* ======================================================================= */
251
252/*
253** Depending on <base> scan the MMU, Data or Instruction side
254** looking for a valid mapping matching Eaddr & asid.
255** Return -1 if not found or the TLB id entry otherwise.
256** Note: it works only for 4k pages!
257*/
258static unsigned long
259lookup_mmu_side(unsigned long base, unsigned long Eaddr, unsigned long asid)
260{
261 regType_t pteH;
262 unsigned long epn;
263 int count;
264
265 epn = Eaddr & 0xfffff000;
266
267 for (count = 0; count < MAX_TLBs; count++, base += TLB_STEP) {
268 pteH = getConfigReg(base);
269 if (GET_VALID(pteH))
270 if ((unsigned long) GET_EPN(pteH) == epn)
271 if ((unsigned long) GET_ASID(pteH) == asid)
272 break;
273 }
274 return ((unsigned long) ((count < MAX_TLBs) ? base : -1));
275}
276
277unsigned long lookup_dtlb(unsigned long Eaddr)
278{
279 unsigned long asid = get_asid();
280 return (lookup_mmu_side((u64) DTLB_BASE, Eaddr, asid));
281}
282
283unsigned long lookup_itlb(unsigned long Eaddr)
284{
285 unsigned long asid = get_asid();
286 return (lookup_mmu_side((u64) ITLB_BASE, Eaddr, asid));
287}
288
289void print_page(struct page *page)
290{
291 printk(" page[%p] -> index 0x%lx, count 0x%x, flags 0x%lx\n",
292 page, page->index, page_count(page), page->flags);
293 printk(" address_space = %p, pages =%ld\n", page->mapping,
294 page->mapping->nrpages);
295
296}