diff options
author | arun <arun@FreeBSD.org> | 2003-10-24 04:56:58 +0000 |
---|---|---|
committer | arun <arun@FreeBSD.org> | 2003-10-24 04:56:58 +0000 |
commit | 05b0056432194711845d7ed2d787081ed3c8c18d (patch) | |
tree | ec0ff5752534f3957c9cc58c99482c0412863a75 | |
parent | b3207a61e74230c67fe117db07d696ea09b7e132 (diff) | |
download | FreeBSD-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.c | 3 |
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"); |