summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarun <arun@FreeBSD.org>2003-10-24 04:56:58 +0000
committerarun <arun@FreeBSD.org>2003-10-24 04:56:58 +0000
commit05b0056432194711845d7ed2d787081ed3c8c18d (patch)
treeec0ff5752534f3957c9cc58c99482c0412863a75
parentb3207a61e74230c67fe117db07d696ea09b7e132 (diff)
downloadFreeBSD-src-05b0056432194711845d7ed2d787081ed3c8c18d.zip
FreeBSD-src-05b0056432194711845d7ed2d787081ed3c8c18d.tar.gz
Use a TR of size 1 << IA64_ID_PAGE_SHIFT instead of 16M to avoid
overlapping TR/TC entries (which results in a machine check). Note that we don't look at the size of the memory descriptor, because it doesn't guarantee non-overlap. With this change, a UP kernel could boot on a Intel Tiger4 machine with the following options: options LOG2_ID_PAGE_SIZE=26 # 64M options LOG2_PAGE_SIZE=14 # 16K Approved by: marcel
-rw-r--r--sys/ia64/ia64/machdep.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c
index de593b9..68acb3f 100644
--- a/sys/ia64/ia64/machdep.c
+++ b/sys/ia64/ia64/machdep.c
@@ -418,8 +418,7 @@ map_port_space(void)
__asm __volatile("rsm psr.ic|psr.i");
__asm __volatile("srlz.d");
__asm __volatile("mov cr.ifa=%0" :: "r"(ia64_port_base));
- /* XXX We should use the size from the memory descriptor. */
- __asm __volatile("mov cr.itir=%0" :: "r"(24 << 2));
+ __asm __volatile("mov cr.itir=%0" :: "r"(IA64_ID_PAGE_SHIFT << 2));
__asm __volatile("itr.d dtr[%0]=%1" :: "r"(2), "r"(*(u_int64_t*)&pte));
__asm __volatile("mov psr.l=%0" :: "r" (psr));
__asm __volatile("srlz.d");
OpenPOWER on IntegriCloud