summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-09-19 22:54:05 +0000
committermarcel <marcel@FreeBSD.org>2003-09-19 22:54:05 +0000
commitef50cc82f8780674002e084e82833804e2957397 (patch)
treec734396c0848a768c2ab5144fbb4b39dac321de4 /lib
parent901f7b2cb79afe6f5a842dc09d70124cbe1cb852 (diff)
downloadFreeBSD-src-ef50cc82f8780674002e084e82833804e2957397.zip
FreeBSD-src-ef50cc82f8780674002e084e82833804e2957397.tar.gz
Stop using the setcontext() syscall to restore an async context.
Instead use the break instruction with an immediate specially created for us.
Diffstat (limited to 'lib')
-rw-r--r--lib/libkse/arch/ia64/ia64/context.S10
-rw-r--r--lib/libpthread/arch/ia64/ia64/context.S10
2 files changed, 10 insertions, 10 deletions
diff --git a/lib/libkse/arch/ia64/ia64/context.S b/lib/libkse/arch/ia64/ia64/context.S
index 49fe42e..9411293 100644
--- a/lib/libkse/arch/ia64/ia64/context.S
+++ b/lib/libkse/arch/ia64/ia64/context.S
@@ -339,13 +339,13 @@ ENTRY(_ia64_save_context, 1)
END(_ia64_save_context)
/*
- * void _ia64_break_setcontext(ucontext_t *ucp);
+ * void _ia64_break_setcontext(mcontext_t *mc);
*/
ENTRY(_ia64_break_setcontext, 1)
-{ .mib
- mov r15=SYS_setcontext
- break 0x100000
- br.ret.sptk rp
+{ .mmi
+ mov r8=r32
+ break 0x180000
+ nop 0
;;
}
END(_ia64_break_setcontext)
diff --git a/lib/libpthread/arch/ia64/ia64/context.S b/lib/libpthread/arch/ia64/ia64/context.S
index 49fe42e..9411293 100644
--- a/lib/libpthread/arch/ia64/ia64/context.S
+++ b/lib/libpthread/arch/ia64/ia64/context.S
@@ -339,13 +339,13 @@ ENTRY(_ia64_save_context, 1)
END(_ia64_save_context)
/*
- * void _ia64_break_setcontext(ucontext_t *ucp);
+ * void _ia64_break_setcontext(mcontext_t *mc);
*/
ENTRY(_ia64_break_setcontext, 1)
-{ .mib
- mov r15=SYS_setcontext
- break 0x100000
- br.ret.sptk rp
+{ .mmi
+ mov r8=r32
+ break 0x180000
+ nop 0
;;
}
END(_ia64_break_setcontext)
OpenPOWER on IntegriCloud