summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-05-17 18:53:36 +0000
committerian <ian@FreeBSD.org>2014-05-17 18:53:36 +0000
commit1253f26158ac37c8e2dbe8087203a2059aa2bb56 (patch)
tree55cacb7f7f4f144bb7eb2d4704b89fa045af7e35 /sys
parent52cdf0b123c0f95c8994717d246d5a3de75058b2 (diff)
downloadFreeBSD-src-1253f26158ac37c8e2dbe8087203a2059aa2bb56.zip
FreeBSD-src-1253f26158ac37c8e2dbe8087203a2059aa2bb56.tar.gz
MFC 263631, 263637, 263664, 263676, 263679, 263698, 263711,
Implement __flt_rounds for ARMv6 hard-float. The fpscr register stores the current rounding mode used by the VFP unit. Simplify how we build MACHINE_ARCH. There are 3 options that may be set however only arm, armeb, armv6, and soon armv6hf will be used. Add the llvm/clang patch for r263619. Reorder the pmap macros so "ARM_MMU_V6 + ARM_MMU_V7" is first. As they are identical this allows us to build for both v6 and v7 together. Add code for enabling second CPU core for A20 SoC. Enable SMP on Cubieboard2. Switch to freebsd.org emal address in copyright.
Diffstat (limited to 'sys')
-rw-r--r--sys/arm/allwinner/a10_clk.c2
-rw-r--r--sys/arm/allwinner/a10_clk.h2
-rw-r--r--sys/arm/allwinner/a10_common.c2
-rw-r--r--sys/arm/allwinner/a10_ehci.c2
-rw-r--r--sys/arm/allwinner/a10_gpio.c2
-rw-r--r--sys/arm/allwinner/a10_gpio.h2
-rw-r--r--sys/arm/allwinner/a10_machdep.c2
-rw-r--r--sys/arm/allwinner/a10_sramc.c2
-rw-r--r--sys/arm/allwinner/a10_sramc.h2
-rw-r--r--sys/arm/allwinner/a20/a20_cpu_cfg.c2
-rw-r--r--sys/arm/allwinner/a20/a20_cpu_cfg.h2
-rw-r--r--sys/arm/allwinner/a20/a20_mp.c158
-rw-r--r--sys/arm/allwinner/a20/files.a201
-rw-r--r--sys/arm/allwinner/aintc.c2
-rw-r--r--sys/arm/allwinner/console.c2
-rw-r--r--sys/arm/allwinner/if_emac.c2
-rw-r--r--sys/arm/allwinner/if_emacreg.h2
-rw-r--r--sys/arm/allwinner/timer.c2
-rw-r--r--sys/arm/conf/CUBIEBOARD21
-rw-r--r--sys/arm/include/param.h24
-rw-r--r--sys/arm/include/pmap.h83
-rw-r--r--sys/arm/rockchip/rk30xx_common.c2
-rw-r--r--sys/arm/rockchip/rk30xx_gpio.c2
-rw-r--r--sys/arm/rockchip/rk30xx_grf.c2
-rw-r--r--sys/arm/rockchip/rk30xx_grf.h2
-rw-r--r--sys/arm/rockchip/rk30xx_machdep.c2
-rw-r--r--sys/arm/rockchip/rk30xx_pmu.c2
-rw-r--r--sys/arm/rockchip/rk30xx_pmu.h2
-rw-r--r--sys/arm/rockchip/rk30xx_wdog.c2
-rw-r--r--sys/arm/rockchip/rk30xx_wdog.h2
-rw-r--r--sys/boot/fdt/dts/arm/cubieboard.dts2
-rw-r--r--sys/boot/fdt/dts/arm/cubieboard2.dts2
-rw-r--r--sys/boot/fdt/dts/arm/rk3188-radxa.dts2
-rw-r--r--sys/boot/fdt/dts/arm/rk3188.dtsi2
34 files changed, 246 insertions, 79 deletions
diff --git a/sys/arm/allwinner/a10_clk.c b/sys/arm/allwinner/a10_clk.c
index 3354c02..2bb683e0 100644
--- a/sys/arm/allwinner/a10_clk.c
+++ b/sys/arm/allwinner/a10_clk.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a10_clk.h b/sys/arm/allwinner/a10_clk.h
index 6bc8ac9..3794196 100644
--- a/sys/arm/allwinner/a10_clk.h
+++ b/sys/arm/allwinner/a10_clk.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a10_common.c b/sys/arm/allwinner/a10_common.c
index 2aaa451..9bc726e 100644
--- a/sys/arm/allwinner/a10_common.c
+++ b/sys/arm/allwinner/a10_common.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a10_ehci.c b/sys/arm/allwinner/a10_ehci.c
index 657a5f5..b99a751 100644
--- a/sys/arm/allwinner/a10_ehci.c
+++ b/sys/arm/allwinner/a10_ehci.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a10_gpio.c b/sys/arm/allwinner/a10_gpio.c
index be269d8..b93bbc9 100644
--- a/sys/arm/allwinner/a10_gpio.c
+++ b/sys/arm/allwinner/a10_gpio.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org>
* Copyright (c) 2012 Luiz Otavio O Souza.
* All rights reserved.
diff --git a/sys/arm/allwinner/a10_gpio.h b/sys/arm/allwinner/a10_gpio.h
index b637985..0e1dc86 100644
--- a/sys/arm/allwinner/a10_gpio.h
+++ b/sys/arm/allwinner/a10_gpio.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a10_machdep.c b/sys/arm/allwinner/a10_machdep.c
index 85cdb11..c0a6ac8 100644
--- a/sys/arm/allwinner/a10_machdep.c
+++ b/sys/arm/allwinner/a10_machdep.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* This code is derived from software written for Brini by Mark Brinicombe
diff --git a/sys/arm/allwinner/a10_sramc.c b/sys/arm/allwinner/a10_sramc.c
index b03d304..fc71c7d 100644
--- a/sys/arm/allwinner/a10_sramc.c
+++ b/sys/arm/allwinner/a10_sramc.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a10_sramc.h b/sys/arm/allwinner/a10_sramc.h
index 8a16910..9c906df 100644
--- a/sys/arm/allwinner/a10_sramc.h
+++ b/sys/arm/allwinner/a10_sramc.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a20/a20_cpu_cfg.c b/sys/arm/allwinner/a20/a20_cpu_cfg.c
index dd560f8..81f6a50 100644
--- a/sys/arm/allwinner/a20/a20_cpu_cfg.c
+++ b/sys/arm/allwinner/a20/a20_cpu_cfg.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a20/a20_cpu_cfg.h b/sys/arm/allwinner/a20/a20_cpu_cfg.h
index f218e6c..de80cfa 100644
--- a/sys/arm/allwinner/a20/a20_cpu_cfg.h
+++ b/sys/arm/allwinner/a20/a20_cpu_cfg.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/a20/a20_mp.c b/sys/arm/allwinner/a20/a20_mp.c
new file mode 100644
index 0000000..463aec8
--- /dev/null
+++ b/sys/arm/allwinner/a20/a20_mp.c
@@ -0,0 +1,158 @@
+/*-
+ * Copyright (c) 2014 Ganbold Tsagaankhuu <ganbold@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/smp.h>
+
+#include <machine/smp.h>
+#include <machine/fdt.h>
+#include <machine/intr.h>
+
+#define CPUCFG_BASE 0x01c25c00
+#define CPUCFG_SIZE 0x400
+
+#define CPU0_RST_CTL 0x40
+#define CPU0_CTL 0x44
+#define CPU0_STATUS 0x48
+#define CPU1_RST_CTL 0x80
+#define CPU1_CTL 0x84
+#define CPU1_STATUS 0x88
+#define CPUCFG_GENCTL 0x184
+#define CPUCFG_P_REG0 0x1a4
+#define CPU1_PWR_CLAMP 0x1b0
+#define CPU1_PWROFF_REG 0x1b4
+#define CPUCFG_DBGCTL0 0x1e0
+#define CPUCFG_DBGCTL1 0x1e4
+
+void
+platform_mp_init_secondary(void)
+{
+
+ gic_init_secondary();
+}
+
+void
+platform_mp_setmaxid(void)
+{
+ int ncpu;
+
+ if (mp_ncpus != 0)
+ return;
+
+ /* Read current CP15 Cache Size ID Register */
+ __asm __volatile("mrc p15, 1, %0, c9, c0, 2" : "=r" (ncpu));
+ ncpu = ((ncpu >> 24) & 0x3) + 1;
+
+ mp_ncpus = ncpu;
+ mp_maxid = ncpu - 1;
+}
+
+int
+platform_mp_probe(void)
+{
+
+ if (mp_ncpus == 0)
+ platform_mp_setmaxid();
+
+ return (mp_ncpus > 1);
+}
+
+void
+platform_mp_start_ap(void)
+{
+ bus_space_handle_t cpucfg;
+
+ uint32_t val;
+
+ if (bus_space_map(fdtbus_bs_tag, CPUCFG_BASE, CPUCFG_SIZE, 0,
+ &cpucfg) != 0)
+ panic("Couldn't map the CPUCFG\n");
+
+ cpu_idcache_wbinv_all();
+ cpu_l2cache_wbinv_all();
+
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPUCFG_P_REG0,
+ pmap_kextract((vm_offset_t)mpentry));
+
+ /*
+ * Assert nCOREPORESET low and set L1RSTDISABLE low.
+ * Ensure DBGPWRDUP is set to LOW to prevent any external
+ * debug access to the processor.
+ */
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_RST_CTL, 0);
+
+ /* Set L1RSTDISABLE low */
+ val = bus_space_read_4(fdtbus_bs_tag, cpucfg, CPUCFG_GENCTL);
+ val &= ~(1 << 1);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPUCFG_GENCTL, val);
+
+ /* Set DBGPWRDUP low */
+ val = bus_space_read_4(fdtbus_bs_tag, cpucfg, CPUCFG_DBGCTL1);
+ val &= ~(1 << 1);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPUCFG_DBGCTL1, val);
+
+ /* Release power clamp */
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0xff);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x7f);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x3f);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x1f);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x0f);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x07);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x03);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x01);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWR_CLAMP, 0x00);
+ DELAY(10000);
+
+ /* Clear power-off gating */
+ val = bus_space_read_4(fdtbus_bs_tag, cpucfg, CPU1_PWROFF_REG);
+ val &= ~(1 << 0);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_PWROFF_REG, val);
+ DELAY(1000);
+
+ /* De-assert cpu core reset */
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPU1_RST_CTL, 3);
+
+ /* Assert DBGPWRDUP signal */
+ val = bus_space_read_4(fdtbus_bs_tag, cpucfg, CPUCFG_DBGCTL1);
+ val |= (1 << 1);
+ bus_space_write_4(fdtbus_bs_tag, cpucfg, CPUCFG_DBGCTL1, val);
+
+ armv7_sev();
+ bus_space_unmap(fdtbus_bs_tag, cpucfg, CPUCFG_SIZE);
+}
+
+void
+platform_ipi_send(cpuset_t cpus, u_int ipi)
+{
+
+ pic_ipi_send(cpus, ipi);
+}
diff --git a/sys/arm/allwinner/a20/files.a20 b/sys/arm/allwinner/a20/files.a20
index c2f34ab..a3a4bfb 100644
--- a/sys/arm/allwinner/a20/files.a20
+++ b/sys/arm/allwinner/a20/files.a20
@@ -20,3 +20,4 @@ arm/allwinner/timer.c standard
arm/allwinner/bus_space.c standard
arm/allwinner/a10_common.c standard
arm/allwinner/a10_machdep.c standard
+arm/allwinner/a20/a20_mp.c optional smp
diff --git a/sys/arm/allwinner/aintc.c b/sys/arm/allwinner/aintc.c
index ca537eb..ed5f1fc 100644
--- a/sys/arm/allwinner/aintc.c
+++ b/sys/arm/allwinner/aintc.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/console.c b/sys/arm/allwinner/console.c
index 52d7376..cf09bfb 100644
--- a/sys/arm/allwinner/console.c
+++ b/sys/arm/allwinner/console.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/if_emac.c b/sys/arm/allwinner/if_emac.c
index bde28b3..88be55a 100644
--- a/sys/arm/allwinner/if_emac.c
+++ b/sys/arm/allwinner/if_emac.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/if_emacreg.h b/sys/arm/allwinner/if_emacreg.h
index c341d5d..ee79c30 100644
--- a/sys/arm/allwinner/if_emacreg.h
+++ b/sys/arm/allwinner/if_emacreg.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (C) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/allwinner/timer.c b/sys/arm/allwinner/timer.c
index c87f947..5ab6d9d 100644
--- a/sys/arm/allwinner/timer.c
+++ b/sys/arm/allwinner/timer.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/conf/CUBIEBOARD2 b/sys/arm/conf/CUBIEBOARD2
index b9a125b..1d5a765 100644
--- a/sys/arm/conf/CUBIEBOARD2
+++ b/sys/arm/conf/CUBIEBOARD2
@@ -138,3 +138,4 @@ options FDT
options FDT_DTB_STATIC
makeoptions FDT_DTS_FILE=cubieboard2.dts
+options SMP # Enable multiple cores
diff --git a/sys/arm/include/param.h b/sys/arm/include/param.h
index ab5b406..d28a2b3 100644
--- a/sys/arm/include/param.h
+++ b/sys/arm/include/param.h
@@ -52,23 +52,29 @@
#define __PCI_REROUTE_INTERRUPT
-#ifndef MACHINE
-#define MACHINE "arm"
-#endif
-#ifndef MACHINE_ARCH
#if defined(__FreeBSD_ARCH_armv6__) || (defined(__ARM_ARCH) && __ARM_ARCH >= 6)
-#ifdef __ARMEB__
-#define MACHINE_ARCH "armv6eb"
+#define _V6_SUFFIX "v6"
#else
-#define MACHINE_ARCH "armv6"
+#define _V6_SUFFIX ""
#endif
+
+#ifdef __ARM_PCS_VFP
+#define _HF_SUFFIX "hf"
#else
+#define _HF_SUFFIX ""
+#endif
+
#ifdef __ARMEB__
-#define MACHINE_ARCH "armeb"
+#define _EB_SUFFIX "eb"
#else
-#define MACHINE_ARCH "arm"
+#define _EB_SUFFIX ""
#endif
+
+#ifndef MACHINE
+#define MACHINE "arm"
#endif
+#ifndef MACHINE_ARCH
+#define MACHINE_ARCH "arm" _V6_SUFFIX _HF_SUFFIX _EB_SUFFIX
#endif
#if defined(SMP) || defined(KLD_MODULE)
diff --git a/sys/arm/include/pmap.h b/sys/arm/include/pmap.h
index 00080b9..70c337a 100644
--- a/sys/arm/include/pmap.h
+++ b/sys/arm/include/pmap.h
@@ -341,47 +341,7 @@ extern int pmap_needs_pte_sync;
#define L2_AP(x) (L2_AP0(x) | L2_AP1(x) | L2_AP2(x) | L2_AP3(x))
#endif
-#if ARM_NMMUS > 1
-/* More than one MMU class configured; use variables. */
-#define L2_S_PROT_U pte_l2_s_prot_u
-#define L2_S_PROT_W pte_l2_s_prot_w
-#define L2_S_PROT_MASK pte_l2_s_prot_mask
-
-#define L1_S_CACHE_MASK pte_l1_s_cache_mask
-#define L2_L_CACHE_MASK pte_l2_l_cache_mask
-#define L2_S_CACHE_MASK pte_l2_s_cache_mask
-
-#define L1_S_PROTO pte_l1_s_proto
-#define L1_C_PROTO pte_l1_c_proto
-#define L2_S_PROTO pte_l2_s_proto
-
-#elif ARM_MMU_GENERIC != 0
-#define L2_S_PROT_U L2_S_PROT_U_generic
-#define L2_S_PROT_W L2_S_PROT_W_generic
-#define L2_S_PROT_MASK L2_S_PROT_MASK_generic
-
-#define L1_S_CACHE_MASK L1_S_CACHE_MASK_generic
-#define L2_L_CACHE_MASK L2_L_CACHE_MASK_generic
-#define L2_S_CACHE_MASK L2_S_CACHE_MASK_generic
-
-#define L1_S_PROTO L1_S_PROTO_generic
-#define L1_C_PROTO L1_C_PROTO_generic
-#define L2_S_PROTO L2_S_PROTO_generic
-
-#elif ARM_MMU_XSCALE == 1
-#define L2_S_PROT_U L2_S_PROT_U_xscale
-#define L2_S_PROT_W L2_S_PROT_W_xscale
-#define L2_S_PROT_MASK L2_S_PROT_MASK_xscale
-
-#define L1_S_CACHE_MASK L1_S_CACHE_MASK_xscale
-#define L2_L_CACHE_MASK L2_L_CACHE_MASK_xscale
-#define L2_S_CACHE_MASK L2_S_CACHE_MASK_xscale
-
-#define L1_S_PROTO L1_S_PROTO_xscale
-#define L1_C_PROTO L1_C_PROTO_xscale
-#define L2_S_PROTO L2_S_PROTO_xscale
-
-#elif (ARM_MMU_V6 + ARM_MMU_V7) != 0
+#if (ARM_MMU_V6 + ARM_MMU_V7) != 0
/*
* AP[2:1] access permissions model:
*
@@ -486,6 +446,47 @@ extern int pmap_needs_pte_sync;
#define ARM_L2S_NRML_IWB_OWB (L2_C|L2_B|L2_SHARED)
#define ARM_L2S_NRML_IWBA_OWBA (L2_S_TEX(1)|L2_C|L2_B|L2_SHARED)
#endif /* SMP */
+
+#elif ARM_NMMUS > 1
+/* More than one MMU class configured; use variables. */
+#define L2_S_PROT_U pte_l2_s_prot_u
+#define L2_S_PROT_W pte_l2_s_prot_w
+#define L2_S_PROT_MASK pte_l2_s_prot_mask
+
+#define L1_S_CACHE_MASK pte_l1_s_cache_mask
+#define L2_L_CACHE_MASK pte_l2_l_cache_mask
+#define L2_S_CACHE_MASK pte_l2_s_cache_mask
+
+#define L1_S_PROTO pte_l1_s_proto
+#define L1_C_PROTO pte_l1_c_proto
+#define L2_S_PROTO pte_l2_s_proto
+
+#elif ARM_MMU_GENERIC != 0
+#define L2_S_PROT_U L2_S_PROT_U_generic
+#define L2_S_PROT_W L2_S_PROT_W_generic
+#define L2_S_PROT_MASK L2_S_PROT_MASK_generic
+
+#define L1_S_CACHE_MASK L1_S_CACHE_MASK_generic
+#define L2_L_CACHE_MASK L2_L_CACHE_MASK_generic
+#define L2_S_CACHE_MASK L2_S_CACHE_MASK_generic
+
+#define L1_S_PROTO L1_S_PROTO_generic
+#define L1_C_PROTO L1_C_PROTO_generic
+#define L2_S_PROTO L2_S_PROTO_generic
+
+#elif ARM_MMU_XSCALE == 1
+#define L2_S_PROT_U L2_S_PROT_U_xscale
+#define L2_S_PROT_W L2_S_PROT_W_xscale
+#define L2_S_PROT_MASK L2_S_PROT_MASK_xscale
+
+#define L1_S_CACHE_MASK L1_S_CACHE_MASK_xscale
+#define L2_L_CACHE_MASK L2_L_CACHE_MASK_xscale
+#define L2_S_CACHE_MASK L2_S_CACHE_MASK_xscale
+
+#define L1_S_PROTO L1_S_PROTO_xscale
+#define L1_C_PROTO L1_C_PROTO_xscale
+#define L2_S_PROTO L2_S_PROTO_xscale
+
#endif /* ARM_NMMUS > 1 */
#if defined(CPU_XSCALE_81342) || ARM_ARCH_6 || ARM_ARCH_7A
diff --git a/sys/arm/rockchip/rk30xx_common.c b/sys/arm/rockchip/rk30xx_common.c
index 0653184..6eb892c 100644
--- a/sys/arm/rockchip/rk30xx_common.c
+++ b/sys/arm/rockchip/rk30xx_common.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/rockchip/rk30xx_gpio.c b/sys/arm/rockchip/rk30xx_gpio.c
index 22dc723..21c52eb 100644
--- a/sys/arm/rockchip/rk30xx_gpio.c
+++ b/sys/arm/rockchip/rk30xx_gpio.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org>
* Copyright (c) 2012 Luiz Otavio O Souza.
* All rights reserved.
diff --git a/sys/arm/rockchip/rk30xx_grf.c b/sys/arm/rockchip/rk30xx_grf.c
index 1b1f6d9..29da576 100644
--- a/sys/arm/rockchip/rk30xx_grf.c
+++ b/sys/arm/rockchip/rk30xx_grf.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/rockchip/rk30xx_grf.h b/sys/arm/rockchip/rk30xx_grf.h
index a26716b..7b5fd80 100644
--- a/sys/arm/rockchip/rk30xx_grf.h
+++ b/sys/arm/rockchip/rk30xx_grf.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/rockchip/rk30xx_machdep.c b/sys/arm/rockchip/rk30xx_machdep.c
index daba99f..8b322b9 100644
--- a/sys/arm/rockchip/rk30xx_machdep.c
+++ b/sys/arm/rockchip/rk30xx_machdep.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* This code is derived from software written for Brini by Mark Brinicombe
diff --git a/sys/arm/rockchip/rk30xx_pmu.c b/sys/arm/rockchip/rk30xx_pmu.c
index 9e264b9..517aef3 100644
--- a/sys/arm/rockchip/rk30xx_pmu.c
+++ b/sys/arm/rockchip/rk30xx_pmu.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/rockchip/rk30xx_pmu.h b/sys/arm/rockchip/rk30xx_pmu.h
index 7bdec94..5d8eb4d 100644
--- a/sys/arm/rockchip/rk30xx_pmu.h
+++ b/sys/arm/rockchip/rk30xx_pmu.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/rockchip/rk30xx_wdog.c b/sys/arm/rockchip/rk30xx_wdog.c
index d6c6092..5a15331 100644
--- a/sys/arm/rockchip/rk30xx_wdog.c
+++ b/sys/arm/rockchip/rk30xx_wdog.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/arm/rockchip/rk30xx_wdog.h b/sys/arm/rockchip/rk30xx_wdog.h
index e7a33eb..c8f5a1d 100644
--- a/sys/arm/rockchip/rk30xx_wdog.h
+++ b/sys/arm/rockchip/rk30xx_wdog.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/boot/fdt/dts/arm/cubieboard.dts b/sys/boot/fdt/dts/arm/cubieboard.dts
index 884dc57..62e6af2 100644
--- a/sys/boot/fdt/dts/arm/cubieboard.dts
+++ b/sys/boot/fdt/dts/arm/cubieboard.dts
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/boot/fdt/dts/arm/cubieboard2.dts b/sys/boot/fdt/dts/arm/cubieboard2.dts
index 1437bfe..3844071 100644
--- a/sys/boot/fdt/dts/arm/cubieboard2.dts
+++ b/sys/boot/fdt/dts/arm/cubieboard2.dts
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/boot/fdt/dts/arm/rk3188-radxa.dts b/sys/boot/fdt/dts/arm/rk3188-radxa.dts
index 7fc8ec5..ff9ee87 100644
--- a/sys/boot/fdt/dts/arm/rk3188-radxa.dts
+++ b/sys/boot/fdt/dts/arm/rk3188-radxa.dts
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/boot/fdt/dts/arm/rk3188.dtsi b/sys/boot/fdt/dts/arm/rk3188.dtsi
index 51d1381..03e38c0 100644
--- a/sys/boot/fdt/dts/arm/rk3188.dtsi
+++ b/sys/boot/fdt/dts/arm/rk3188.dtsi
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@gmail.com>
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
OpenPOWER on IntegriCloud