summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMarcel Moolenaar <marcel@FreeBSD.org>2003-08-05 19:33:01 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>2003-08-05 19:33:01 +0000
commit50be3a75cc25717f5a00a0586647bffab9a36f5a (patch)
treeab6951c7165658ed0c7e6a8ec79eb4aca2cdb5be /lib
parent7f36189f8a4c7f41d49992fb89773c7e7a9ca47e (diff)
Notes
Diffstat (limited to 'lib')
-rw-r--r--lib/libkse/arch/ia64/ia64/context.S38
-rw-r--r--lib/libpthread/arch/ia64/ia64/context.S38
2 files changed, 50 insertions, 26 deletions
diff --git a/lib/libkse/arch/ia64/ia64/context.S b/lib/libkse/arch/ia64/ia64/context.S
index 8b739c6cb578..6c0c082475d6 100644
--- a/lib/libkse/arch/ia64/ia64/context.S
+++ b/lib/libkse/arch/ia64/ia64/context.S
@@ -59,19 +59,19 @@ ENTRY(_ia64_restore_context, 3)
}
{ .mmi
ld8 r19=[r30],16 // pfs
- ld8 r20=[r31],24 // bspstore
+ ld8 r20=[r31],32 // bspstore
mov rp=r17
;;
}
{ .mmi
- ld8 r21=[r30],24 // rnat
- ld8 r13=[r31],16 // tp
+ ld8 r21=[r30],32 // rnat
+ ld8 r22=[r31],16 // rsc
mov pr=r18,0x1fffe
;;
}
{ .mmi
- ld8 r22=[r30],16 // rsc
- ld8 r23=[r31],16 // fpsr
+ ld8 r23=[r30] // fpsr
+ ld8 r24=[r31] // psr -- not used
mov r3=r34
;;
}
@@ -161,12 +161,15 @@ ENTRY(_ia64_restore_context, 3)
ldf.fill f28=[r14],32
ldf.fill f29=[r15],32
;;
-{ .mmi
- ldf.fill f30=[r14]
- ldf.fill f31=[r15]
- add r8=1,r0
+ ldf.fill f30=[r14],32+24
+ ldf.fill f31=[r15],24+24
+ ;;
+ ld8 r8=[r14],16
+ ld8 r9=[r15],16
+ ;;
+ ld8 r10=[r14]
+ ld8 r11=[r15]
;;
-}
{ .mmb
(p15) st8 [r3]=r2
mov ar.fpsr=r23
@@ -234,7 +237,7 @@ ENTRY(_ia64_save_context, 1)
;;
}
{ .mmi
- st8 [r32]=r13,16 // tp
+ st8 [r32]=r13,16 // tp -- not used
st8 [r31]=r14,16 // rsc
mov r16=b1
;;
@@ -312,12 +315,21 @@ ENTRY(_ia64_save_context, 1)
;;
{ .mmi
stf.spill [r31]=f29,32
- stf.spill [r32]=f30
+ stf.spill [r32]=f30,32+24
+ add r14=1,r0
+ ;;
+}
+{ .mmi
+ stf.spill [r31]=f31,24+24
+ st8 [r32]=r14,16 // r8
add r8=0,r0
;;
}
+ st8 [r31]=r0,16 // r9
+ st8 [r32]=r0 // r10
+ ;;
{ .mmb
- stf.spill [r31]=f31
+ st8 [r31]=r0 // r11
mf
br.ret.sptk rp
;;
diff --git a/lib/libpthread/arch/ia64/ia64/context.S b/lib/libpthread/arch/ia64/ia64/context.S
index 8b739c6cb578..6c0c082475d6 100644
--- a/lib/libpthread/arch/ia64/ia64/context.S
+++ b/lib/libpthread/arch/ia64/ia64/context.S
@@ -59,19 +59,19 @@ ENTRY(_ia64_restore_context, 3)
}
{ .mmi
ld8 r19=[r30],16 // pfs
- ld8 r20=[r31],24 // bspstore
+ ld8 r20=[r31],32 // bspstore
mov rp=r17
;;
}
{ .mmi
- ld8 r21=[r30],24 // rnat
- ld8 r13=[r31],16 // tp
+ ld8 r21=[r30],32 // rnat
+ ld8 r22=[r31],16 // rsc
mov pr=r18,0x1fffe
;;
}
{ .mmi
- ld8 r22=[r30],16 // rsc
- ld8 r23=[r31],16 // fpsr
+ ld8 r23=[r30] // fpsr
+ ld8 r24=[r31] // psr -- not used
mov r3=r34
;;
}
@@ -161,12 +161,15 @@ ENTRY(_ia64_restore_context, 3)
ldf.fill f28=[r14],32
ldf.fill f29=[r15],32
;;
-{ .mmi
- ldf.fill f30=[r14]
- ldf.fill f31=[r15]
- add r8=1,r0
+ ldf.fill f30=[r14],32+24
+ ldf.fill f31=[r15],24+24
+ ;;
+ ld8 r8=[r14],16
+ ld8 r9=[r15],16
+ ;;
+ ld8 r10=[r14]
+ ld8 r11=[r15]
;;
-}
{ .mmb
(p15) st8 [r3]=r2
mov ar.fpsr=r23
@@ -234,7 +237,7 @@ ENTRY(_ia64_save_context, 1)
;;
}
{ .mmi
- st8 [r32]=r13,16 // tp
+ st8 [r32]=r13,16 // tp -- not used
st8 [r31]=r14,16 // rsc
mov r16=b1
;;
@@ -312,12 +315,21 @@ ENTRY(_ia64_save_context, 1)
;;
{ .mmi
stf.spill [r31]=f29,32
- stf.spill [r32]=f30
+ stf.spill [r32]=f30,32+24
+ add r14=1,r0
+ ;;
+}
+{ .mmi
+ stf.spill [r31]=f31,24+24
+ st8 [r32]=r14,16 // r8
add r8=0,r0
;;
}
+ st8 [r31]=r0,16 // r9
+ st8 [r32]=r0 // r10
+ ;;
{ .mmb
- stf.spill [r31]=f31
+ st8 [r31]=r0 // r11
mf
br.ret.sptk rp
;;