summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/aim/trap_subr.S
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2005-07-30 11:14:31 +0000
committergrehan <grehan@FreeBSD.org>2005-07-30 11:14:31 +0000
commit0fa9c0072869442b1991859e8502cebe197afff3 (patch)
treea64d06e4aae330b1b275ad706f9ce8ee75083f0a /sys/powerpc/aim/trap_subr.S
parent8d407835a80df92b173c8d1dd7a556a9e5f0855b (diff)
downloadFreeBSD-src-0fa9c0072869442b1991859e8502cebe197afff3.zip
FreeBSD-src-0fa9c0072869442b1991859e8502cebe197afff3.tar.gz
Temporary band-aid to fix hang when a process exec's Altivec instructions.
trap_subr.S: declare a stub for the a-unavailable trap that does an absolute jump to the vector-assist trap. This is due to the fact that the vec-unavail trap doesn't start at a 256-byte boundary, so the trick of masking the bottom 8 bits of the link register to identify the interrupt doesn't work, so let the vec-assist case handle Altivec-disabled for the time being. Note that this will be fixed in the future with a much smaller vector code-stub (< 16 bytes) that will allow use of strange vector offsets that are also present in 4xx processors, and also allow smaller differences in vector codepaths on the G5. trap.c: Treat altivec-unavailable/assist process traps as SIGILL. Not quite correct, since altivec-assist should really be a panic, but it is fine for the moment due to the above measure. machdep.c Install the stub code for the altivec-unavailable trap, and the standard trap code at the altivec-assist. Reported by: Andreas Tobler <toa at pop agri ch> MFC after: 3 days
Diffstat (limited to 'sys/powerpc/aim/trap_subr.S')
-rw-r--r--sys/powerpc/aim/trap_subr.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/powerpc/aim/trap_subr.S b/sys/powerpc/aim/trap_subr.S
index 60435dd..c719917 100644
--- a/sys/powerpc/aim/trap_subr.S
+++ b/sys/powerpc/aim/trap_subr.S
@@ -443,6 +443,14 @@ CNAME(trapexit):
FRAME_LEAVE(PC_TEMPSAVE)
rfi
+/*
+ * Temporary: vector-unavailable traps are directed to vector-assist traps
+ */
+ .globl CNAME(vectrap),CNAME(vectrapsize)
+CNAME(vectrap):
+ ba EXC_VECAST
+CNAME(vectrapsize) = .-CNAME(vectrap)
+
#if defined(KDB)
/*
* Deliberate entry to dbtrap
OpenPOWER on IntegriCloud