diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2007-12-22 19:38:34 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2007-12-22 19:38:34 +0000 |
commit | b575ace5a68441ce83385134f42dfd60c88a1d2c (patch) | |
tree | 90802da6b201f66f1e3fc5f858c500a99af9710b | |
parent | c1623180e498b8ade605b387cedcb2117ced9523 (diff) |
Make sure we have a real stack when invoking getipl() during exceptions.
Fits in the brown-paperbag bug category.
-rw-r--r-- | sys/arch/m88k/m88k/eh_common.S | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/sys/arch/m88k/m88k/eh_common.S b/sys/arch/m88k/m88k/eh_common.S index 47054ef2b95..c5fc334612e 100644 --- a/sys/arch/m88k/m88k/eh_common.S +++ b/sys/arch/m88k/m88k/eh_common.S @@ -1,4 +1,4 @@ -/* $OpenBSD: eh_common.S,v 1.43 2007/12/21 23:56:54 miod Exp $ */ +/* $OpenBSD: eh_common.S,v 1.44 2007/12/22 19:38:33 miod Exp $ */ /* * Mach Operating System * Copyright (c) 1993-1991 Carnegie Mellon University @@ -1415,11 +1415,7 @@ ASLOCAL(m88100_fpu_enable) st r26, r31, GENREG_OFF(26) st r27, r31, GENREG_OFF(27) st r28, r31, GENREG_OFF(28) - - /* get and save IPL */ - bsr.n _C_LABEL(getipl) - st r29, r31, GENREG_OFF(29) - st r2, r31, EF_MASK + st r29, r31, GENREG_OFF(29) /* * SR1: free @@ -1461,6 +1457,10 @@ ASLOCAL(m88100_fpu_enable) addu r31, r31, USPACE /* point at proper end */ 1: + /* get and save IPL */ + bsr _C_LABEL(getipl) + st r2, r30, EF_MASK + /* * here - r30 holds a pointer to the exception frame. * r31 is a pointer to the kernel stack/interrupt stack. @@ -2047,11 +2047,7 @@ ASLOCAL(m88110_shadow_enable) st r26, r31, GENREG_OFF(26) st r27, r31, GENREG_OFF(27) st r28, r31, GENREG_OFF(28) - - /* get and save IPL */ - bsr.n _C_LABEL(getipl) - st r29, r31, GENREG_OFF(29) - st r2, r31, EF_MASK + st r29, r31, GENREG_OFF(29) /* * SR1: free @@ -2090,6 +2086,10 @@ ASLOCAL(m88110_shadow_enable) addu r31, r31, USPACE /* point at proper end */ 1: + /* get and save IPL */ + bsr _C_LABEL(getipl) + st r2, r30, EF_MASK + /* * here - r30 holds a pointer to the exception frame. * r31 is a pointer to the kernel stack/interrupt stack. |