diff options
author | imp <imp@FreeBSD.org> | 2016-01-26 18:39:23 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2016-01-26 18:39:23 +0000 |
commit | e006e85d52442ba276643b5d2f11da59797c7de1 (patch) | |
tree | a937db6630a271de9df25ba345724ffb89f5a99c | |
parent | 6b1bfc333f0dfda88eea4b8a365522145c396084 (diff) | |
download | FreeBSD-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
-rw-r--r-- | sys/mips/mips/exception.S | 6 |
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 |