summaryrefslogtreecommitdiff
path: root/src/thread/i386/cancellation.s
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-08-03 19:57:46 -0400
committerRich Felker <dalias@aerifal.cx>2011-08-03 19:57:46 -0400
commit5f37fc132a8f41994f37b6712feb2d4fd34c2be0 (patch)
treeaaaa1a58cb009684d183ee7cb21b805c540f6a3e /src/thread/i386/cancellation.s
parent56385dd5feb4292183c48f62355e1ce4d796957e (diff)
downloadmusl-5f37fc132a8f41994f37b6712feb2d4fd34c2be0.tar.gz
further debloat cancellation handlers
cleanup push and pop are also no-ops if pthread_exit is not reachable. this can make a big difference for library code which needs to protect itself against cancellation, but which is unlikely to actually be used in programs with threads/cancellation.
Diffstat (limited to 'src/thread/i386/cancellation.s')
-rw-r--r--src/thread/i386/cancellation.s34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/thread/i386/cancellation.s b/src/thread/i386/cancellation.s
new file mode 100644
index 00000000..75dc6091
--- /dev/null
+++ b/src/thread/i386/cancellation.s
@@ -0,0 +1,34 @@
+.text
+.global __pthread_register_cancel
+.type __pthread_register_cancel,@function
+__pthread_register_cancel:
+ pushl %eax
+ call __pthread_do_register
+ popl %eax
+ ret
+
+.global __pthread_unregister_cancel
+.type __pthread_unregister_cancel,@function
+__pthread_unregister_cancel:
+ pushl %eax
+ call __pthread_do_unregister
+ popl %eax
+ ret
+
+.global __pthread_unwind_next
+.type __pthread_unwind_next,@function
+__pthread_unwind_next:
+ pushl %eax
+ call __pthread_do_unwind
+ popl %eax
+__pthread_do_unwind:
+__pthread_do_register:
+__pthread_do_unregister:
+ ret
+
+.weak __pthread_do_unwind
+.weak __pthread_do_register
+.weak __pthread_do_unregister
+.type __pthread_do_unwind,@function
+.type __pthread_do_register,@function
+.type __pthread_do_unregister,@function