summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2013-11-01 00:21:38 +0000
committermarcel <marcel@FreeBSD.org>2013-11-01 00:21:38 +0000
commit5539f586a1d25e3fae7a6dc8960c12ed5537e6fd (patch)
treef7f785514990dcce2e913d8fffb019da7da25030 /sys/ia64
parent2ee9403e762e8a3c81eade87081cf8da71bc51a9 (diff)
downloadFreeBSD-src-5539f586a1d25e3fae7a6dc8960c12ed5537e6fd.zip
FreeBSD-src-5539f586a1d25e3fae7a6dc8960c12ed5537e6fd.tar.gz
The PAL_PTCE_INFO function returns the counts and strides of the
outer and inner loop as 32-bit integers mux'd in 64-bit return values. Change our data types for the count and stride to match and simplify/adjust accordingly. Note that with this change the defaults of the ptc.e parameters have changed. Since all hardware is supposed to support the PAL call, there should be no impact. Even ski is unaffected, because the TC is re-initialized without considering the virtual address. So, as long as we call ptc.e at least once, we're good. That's what the new defaults do. Most processor implementations need but a single ptc.e to purge the entire TC anyway...
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/pmap.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c
index cf3296c..89bd82d 100644
--- a/sys/ia64/ia64/pmap.c
+++ b/sys/ia64/ia64/pmap.c
@@ -195,12 +195,12 @@ extern struct ia64_lpte ***ia64_kptdir;
vm_offset_t kernel_vm_end;
-/* Values for ptc.e. XXX values for SKI. */
-static uint64_t pmap_ptc_e_base = 0x100000000;
-static uint64_t pmap_ptc_e_count1 = 3;
-static uint64_t pmap_ptc_e_count2 = 2;
-static uint64_t pmap_ptc_e_stride1 = 0x2000;
-static uint64_t pmap_ptc_e_stride2 = 0x100000000;
+/* Defaults for ptc.e. */
+static uint64_t pmap_ptc_e_base = 0;
+static uint32_t pmap_ptc_e_count1 = 1;
+static uint32_t pmap_ptc_e_count2 = 1;
+static uint32_t pmap_ptc_e_stride1 = 0;
+static uint32_t pmap_ptc_e_stride2 = 0;
struct mtx pmap_ptc_mutex;
@@ -324,12 +324,12 @@ pmap_bootstrap()
panic("Can't configure ptc.e parameters");
pmap_ptc_e_base = res.pal_result[0];
pmap_ptc_e_count1 = res.pal_result[1] >> 32;
- pmap_ptc_e_count2 = res.pal_result[1] & ((1L<<32) - 1);
+ pmap_ptc_e_count2 = res.pal_result[1];
pmap_ptc_e_stride1 = res.pal_result[2] >> 32;
- pmap_ptc_e_stride2 = res.pal_result[2] & ((1L<<32) - 1);
+ pmap_ptc_e_stride2 = res.pal_result[2];
if (bootverbose)
- printf("ptc.e base=0x%lx, count1=%ld, count2=%ld, "
- "stride1=0x%lx, stride2=0x%lx\n",
+ printf("ptc.e base=0x%lx, count1=%u, count2=%u, "
+ "stride1=0x%x, stride2=0x%x\n",
pmap_ptc_e_base,
pmap_ptc_e_count1,
pmap_ptc_e_count2,
OpenPOWER on IntegriCloud