summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/ia64/ia64/genassym.c6
-rw-r--r--sys/ia64/ia64/swtch.s10
2 files changed, 16 insertions, 0 deletions
diff --git a/sys/ia64/ia64/genassym.c b/sys/ia64/ia64/genassym.c
index 4a04842..4aa349f 100644
--- a/sys/ia64/ia64/genassym.c
+++ b/sys/ia64/ia64/genassym.c
@@ -37,6 +37,8 @@
* $FreeBSD$
*/
+#include "opt_ia32.h"
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/assym.h>
@@ -63,6 +65,10 @@
#include <net/if.h>
#include <netinet/in.h>
+#ifdef IA32
+ASSYM(IA32, IA32);
+#endif
+
ASSYM(PC_CURTHREAD, offsetof(struct pcpu, pc_curthread));
ASSYM(PC_IDLETHREAD, offsetof(struct pcpu, pc_idlethread));
ASSYM(PC_FPCURTHREAD, offsetof(struct pcpu, pc_fpcurthread));
diff --git a/sys/ia64/ia64/swtch.s b/sys/ia64/ia64/swtch.s
index b17c92a..2fce5f7 100644
--- a/sys/ia64/ia64/swtch.s
+++ b/sys/ia64/ia64/swtch.s
@@ -155,9 +155,12 @@ ENTRY(pcb_save,0)
st8 [r8]=r17,16 // ar.rnat
st8 [r9]=r18,16 // ar.lc
;;
+{ .mmb
st8 [r8]=r19,16 // pc_current_pmap
+#ifdef IA32
mov r16=ar.fcr
;;
+}
st8 [r9]=r16,16 // ar.fcr
mov r17=ar.eflag
;;
@@ -178,6 +181,7 @@ ENTRY(pcb_save,0)
;;
{ .mmb
st8 [r9]=r16,16 // ar.fdr
+#endif
mov ar.rsc=3
br.sptk.many b6
;;
@@ -279,10 +283,13 @@ ENTRY(pcb_restore,0)
{ .mmi
invala
;;
+#ifdef IA32
ld8 r16=[r9],16 // ar.fcr
+#endif
mov r18=ar.lc
;;
}
+#ifdef IA32
ld8 r17=[r8],16 // ar.eflag
mov ar.fcr=r16
;;
@@ -301,8 +308,11 @@ ENTRY(pcb_restore,0)
ld8 r16=[r9],16 // ar.fdr
mov ar.fir=r17
;;
+#endif
{ .mmb
+#ifdef IA32
mov ar.fdr=r16
+#endif
mov ar.rsc=3
br.ret.sptk b0
;;
OpenPOWER on IntegriCloud