Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys Switch to using the common <common/pmap/tlb/tlb.h>



details:   https://anonhg.NetBSD.org/src/rev/836e460b2f79
branches:  trunk
changeset: 766450:836e460b2f79
user:      matt <matt%NetBSD.org@localhost>
date:      Thu Jun 23 01:27:20 2011 +0000

description:
Switch to using the common <common/pmap/tlb/tlb.h>

diffstat:

 sys/arch/evbppc/mpc85xx/machdep.c       |   6 +-
 sys/arch/powerpc/booke/booke_stubs.c    |  92 +++++++++++++++++---------------
 sys/arch/powerpc/booke/e500_tlb.c       |  41 ++++++++++---
 sys/arch/powerpc/include/booke/cpuvar.h |  38 +++----------
 sys/arch/powerpc/include/booke/pte.h    |   7 +-
 sys/arch/powerpc/include/types.h        |   4 +-
 sys/common/pmap/tlb/pmap_tlb.c          |   7 +-
 7 files changed, 104 insertions(+), 91 deletions(-)

diffs (truncated from 455 to 300 lines):

diff -r f7b2790caebd -r 836e460b2f79 sys/arch/evbppc/mpc85xx/machdep.c
--- a/sys/arch/evbppc/mpc85xx/machdep.c Thu Jun 23 00:46:37 2011 +0000
+++ b/sys/arch/evbppc/mpc85xx/machdep.c Thu Jun 23 01:27:20 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.11 2011/06/15 15:18:20 matt Exp $        */
+/*     $NetBSD: machdep.c,v 1.12 2011/06/23 01:27:20 matt Exp $        */
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -821,8 +821,8 @@
         * We know the GUR is mapped via a TLB1 entry so we add a limited
         * mapiodev which allows mappings in GUR space.
         */
-       CTASSERT(offsetof(struct tlb_md_ops, md_tlb_mapiodev) == 0);
-       cpu_md_ops.md_tlb_ops = (const void *)&early_tlb_mapiodev;
+       CTASSERT(offsetof(struct tlb_md_io_ops, md_tlb_mapiodev) == 0);
+       cpu_md_ops.md_tlb_io_ops = (const void *)&early_tlb_mapiodev;
        bus_space_init(&gur_bst, NULL, NULL, 0);
        bus_space_init(&gur_le_bst, NULL, NULL, 0);
        cpu->cpu_bst = &gur_bst;
diff -r f7b2790caebd -r 836e460b2f79 sys/arch/powerpc/booke/booke_stubs.c
--- a/sys/arch/powerpc/booke/booke_stubs.c      Thu Jun 23 00:46:37 2011 +0000
+++ b/sys/arch/powerpc/booke/booke_stubs.c      Thu Jun 23 01:27:20 2011 +0000
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: booke_stubs.c,v 1.6 2011/06/15 15:22:56 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: booke_stubs.c,v 1.7 2011/06/23 01:27:20 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -45,17 +45,17 @@
 
 #define        __stub  __section(".stub") __noprofile
 
-void tlb_set_asid(uint32_t) __stub;
+void tlb_set_asid(tlb_asid_t) __stub;
 
 void
-tlb_set_asid(uint32_t asid)
+tlb_set_asid(tlb_asid_t asid)
 {
        (*cpu_md_ops.md_tlb_ops->md_tlb_set_asid)(asid);
 }
 
-uint32_t tlb_get_asid(void) __stub;
+tlb_asid_t tlb_get_asid(void) __stub;
 
-uint32_t
+tlb_asid_t
 tlb_get_asid(void)
 {
        return (*cpu_md_ops.md_tlb_ops->md_tlb_get_asid)();
@@ -77,26 +77,26 @@
        (*cpu_md_ops.md_tlb_ops->md_tlb_invalidate_globals)();
 }
 
-void tlb_invalidate_asids(uint32_t, uint32_t) __stub;
+void tlb_invalidate_asids(tlb_asid_t, tlb_asid_t) __stub;
 
 void
-tlb_invalidate_asids(uint32_t asid_lo, uint32_t asid_hi)
+tlb_invalidate_asids(tlb_asid_t asid_lo, tlb_asid_t asid_hi)
 {
        (*cpu_md_ops.md_tlb_ops->md_tlb_invalidate_asids)(asid_lo, asid_hi);
 }
 
-void tlb_invalidate_addr(vaddr_t, uint32_t) __stub;
+void tlb_invalidate_addr(vaddr_t, tlb_asid_t) __stub;
 
 void
-tlb_invalidate_addr(vaddr_t va, uint32_t asid)
+tlb_invalidate_addr(vaddr_t va, tlb_asid_t asid)
 {
        (*cpu_md_ops.md_tlb_ops->md_tlb_invalidate_addr)(va, asid);
 }
 
-bool tlb_update_addr(vaddr_t, uint32_t, uint32_t, bool) __stub;
+bool tlb_update_addr(vaddr_t, tlb_asid_t, pt_entry_t, bool) __stub;
 
 bool
-tlb_update_addr(vaddr_t va, uint32_t asid, uint32_t pte, bool insert_p)
+tlb_update_addr(vaddr_t va, tlb_asid_t asid, pt_entry_t pte, bool insert_p)
 {
        return (*cpu_md_ops.md_tlb_ops->md_tlb_update_addr)(va, asid, pte, insert_p);
 }
@@ -109,44 +109,20 @@
        (*cpu_md_ops.md_tlb_ops->md_tlb_read_entry)(pos, tlb);
 }
 
-u_int tlb_record_asids(u_long *, uint32_t) __stub;
-
-u_int
-tlb_record_asids(u_long *bitmap, uint32_t start)
-{
-       return (*cpu_md_ops.md_tlb_ops->md_tlb_record_asids)(bitmap, start);
-}
-
-void *tlb_mapiodev(paddr_t, psize_t) __stub;
-
-void *
-tlb_mapiodev(paddr_t pa, psize_t len)
-{
-       return (*cpu_md_ops.md_tlb_ops->md_tlb_mapiodev)(pa, len);
-}
-
-void tlb_unmapiodev(vaddr_t, vsize_t) __stub;
+void tlb_write_entry(size_t, const struct tlbmask *) __stub;
 
 void
-tlb_unmapiodev(vaddr_t va, vsize_t len)
+tlb_write_entry(size_t pos, const struct tlbmask *tlb)
 {
-       (*cpu_md_ops.md_tlb_ops->md_tlb_unmapiodev)(va, len);
+       (*cpu_md_ops.md_tlb_ops->md_tlb_write_entry)(pos, tlb);
 }
 
-int tlb_ioreserve(vaddr_t, vsize_t, uint32_t) __stub;
+u_int tlb_record_asids(u_long *) __stub;
 
-int
-tlb_ioreserve(vaddr_t va, vsize_t len, uint32_t pte)
+u_int
+tlb_record_asids(u_long *bitmap)
 {
-       return (*cpu_md_ops.md_tlb_ops->md_tlb_ioreserve)(va, len, pte);
-}
-
-int tlb_iorelease(vaddr_t) __stub;
-
-int
-tlb_iorelease(vaddr_t va)
-{
-       return (*cpu_md_ops.md_tlb_ops->md_tlb_iorelease)(va);
+       return (*cpu_md_ops.md_tlb_ops->md_tlb_record_asids)(bitmap);
 }
 
 void tlb_dump(void (*)(const char *, ...)) __stub;
@@ -165,3 +141,35 @@
 {
        (*cpu_md_ops.md_tlb_ops->md_tlb_walk)(ctx, func);
 }
+
+void *tlb_mapiodev(paddr_t, psize_t) __stub;
+
+void *
+tlb_mapiodev(paddr_t pa, psize_t len)
+{
+       return (*cpu_md_ops.md_tlb_io_ops->md_tlb_mapiodev)(pa, len);
+}
+
+void tlb_unmapiodev(vaddr_t, vsize_t) __stub;
+
+void
+tlb_unmapiodev(vaddr_t va, vsize_t len)
+{
+       (*cpu_md_ops.md_tlb_io_ops->md_tlb_unmapiodev)(va, len);
+}
+
+int tlb_ioreserve(vaddr_t, vsize_t, uint32_t) __stub;
+
+int
+tlb_ioreserve(vaddr_t va, vsize_t len, uint32_t pte)
+{
+       return (*cpu_md_ops.md_tlb_io_ops->md_tlb_ioreserve)(va, len, pte);
+}
+
+int tlb_iorelease(vaddr_t) __stub;
+
+int
+tlb_iorelease(vaddr_t va)
+{
+       return (*cpu_md_ops.md_tlb_io_ops->md_tlb_iorelease)(va);
+}
diff -r f7b2790caebd -r 836e460b2f79 sys/arch/powerpc/booke/e500_tlb.c
--- a/sys/arch/powerpc/booke/e500_tlb.c Thu Jun 23 00:46:37 2011 +0000
+++ b/sys/arch/powerpc/booke/e500_tlb.c Thu Jun 23 01:27:20 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: e500_tlb.c,v 1.3 2011/06/05 16:52:24 matt Exp $        */
+/*     $NetBSD: e500_tlb.c,v 1.4 2011/06/23 01:27:20 matt Exp $        */
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: e500_tlb.c,v 1.3 2011/06/05 16:52:24 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: e500_tlb.c,v 1.4 2011/06/23 01:27:20 matt Exp $");
 
 #include <sys/param.h>
 
@@ -335,12 +335,20 @@
        wrtee(msr);
 }
 
-static void e500_tlb_set_asid(uint32_t asid)
+static tlb_asid_t
+e500_tlb_get_asid(void)
+{
+       return mfspr(SPR_PID0);
+}
+
+static void
+e500_tlb_set_asid(tlb_asid_t asid)
 {
        mtspr(SPR_PID0, asid);
 }
 
-static void e500_tlb_invalidate_all(void)
+static void
+e500_tlb_invalidate_all(void)
 {
        /*
         * This does a flash invalidate of all entries in TLB0.
@@ -405,7 +413,7 @@
 }
 
 static void
-e500_tlb_invalidate_asids(uint32_t asid_lo, uint32_t asid_hi)
+e500_tlb_invalidate_asids(tlb_asid_t asid_lo, tlb_asid_t asid_hi)
 {
        const size_t tlbassoc = TLBCFG_ASSOC(mftlb0cfg());
        const size_t tlbentries = TLBCFG_NENTRY(mftlb0cfg());
@@ -443,7 +451,7 @@
 }
 
 static u_int
-e500_tlb_record_asids(u_long *bitmap, uint32_t start_slot)
+e500_tlb_record_asids(u_long *bitmap)
 {
        const size_t tlbassoc = TLBCFG_ASSOC(mftlb0cfg());
        const size_t tlbentries = TLBCFG_NENTRY(mftlb0cfg());
@@ -480,7 +488,7 @@
 }
 
 static void
-e500_tlb_invalidate_addr(vaddr_t va, uint32_t asid)
+e500_tlb_invalidate_addr(vaddr_t va, tlb_asid_t asid)
 {
        KASSERT((va & PAGE_MASK) == 0);
        /*
@@ -492,7 +500,7 @@
 }
 
 static bool
-e500_tlb_update_addr(vaddr_t va, uint32_t asid, uint32_t pte, bool insert)
+e500_tlb_update_addr(vaddr_t va, tlb_asid_t asid, pt_entry_t pte, bool insert)
 {
        struct e500_hwtlb hwtlb = tlb_to_hwtlb(
            (struct e500_tlb){ .tlb_va = va, .tlb_asid = asid,
@@ -529,6 +537,11 @@
 }
 
 static void
+e500_tlb_write_entry(size_t index, const struct tlbmask *tlb)
+{
+}
+
+static void
 e500_tlb_read_entry(size_t index, struct tlbmask *tlb)
 {
 }
@@ -696,7 +709,7 @@
 }
 
 static int
-e500_tlb_ioreserve(vaddr_t va, vsize_t len, uint32_t pte)
+e500_tlb_ioreserve(vaddr_t va, vsize_t len, pt_entry_t pte)
 {
        struct e500_tlb1 * const tlb1 = &e500_tlb1;
        struct e500_xtlb *xtlb;
@@ -786,6 +799,7 @@
        return nextslot;
 }
 static const struct tlb_md_ops e500_tlb_ops = {
+       .md_tlb_get_asid = e500_tlb_get_asid,
        .md_tlb_set_asid = e500_tlb_set_asid,
        .md_tlb_invalidate_all = e500_tlb_invalidate_all,
        .md_tlb_invalidate_globals = e500_tlb_invalidate_globals,
@@ -793,13 +807,17 @@
        .md_tlb_invalidate_addr = e500_tlb_invalidate_addr,
        .md_tlb_update_addr = e500_tlb_update_addr,
        .md_tlb_record_asids = e500_tlb_record_asids,
+       .md_tlb_write_entry = e500_tlb_write_entry,
        .md_tlb_read_entry = e500_tlb_read_entry,
+       .md_tlb_dump = e500_tlb_dump,
+       .md_tlb_walk = e500_tlb_walk,
+};
+
+static const struct tlb_md_io_ops e500_tlb_io_ops = {
        .md_tlb_mapiodev = e500_tlb_mapiodev,
        .md_tlb_unmapiodev = e500_tlb_unmapiodev,
        .md_tlb_ioreserve = e500_tlb_ioreserve,
        .md_tlb_iorelease = e500_tlb_iorelease,
-       .md_tlb_dump = e500_tlb_dump,
-       .md_tlb_walk = e500_tlb_walk,
 };
 



Home | Main Index | Thread Index | Old Index