summaryrefslogtreecommitdiffstats
path: root/sys/mips
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2016-01-26 18:39:23 +0000
committerimp <imp@FreeBSD.org>2016-01-26 18:39:23 +0000
commite006e85d52442ba276643b5d2f11da59797c7de1 (patch)
treea937db6630a271de9df25ba345724ffb89f5a99c /sys/mips
parent6b1bfc333f0dfda88eea4b8a365522145c396084 (diff)
downloadFreeBSD-src-e006e85d52442ba276643b5d2f11da59797c7de1.zip
FreeBSD-src-e006e85d52442ba276643b5d2f11da59797c7de1.tar.gz
Add a comment about why at is turned off in the exception handler.
Only k0 and k1 may be touched until we save registers somewhere. MFC After: 2 days
Diffstat (limited to 'sys/mips')
-rw-r--r--sys/mips/mips/exception.S6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/mips/mips/exception.S b/sys/mips/mips/exception.S
index 6eddd19..01fd210 100644
--- a/sys/mips/mips/exception.S
+++ b/sys/mips/mips/exception.S
@@ -177,6 +177,12 @@ MipsDoTLBMiss:
VECTOR(MipsException, unknown)
/*
* Find out what mode we came from and jump to the proper handler.
+ *
+ * Note: at turned off here because we cannot trash the at register
+ * in this exception code. Only k0 and k1 may be modified before
+ * we save registers. This is true of all functions called through
+ * the pointer magic: Mips{User,Kern}Intr, Mips{User,Kern}GenException
+ * and MipsTLBInvalidException
*/
.set noat
mfc0 k0, MIPS_COP_0_STATUS # Get the status register
OpenPOWER on IntegriCloud