summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/thread/nt32/syscall_cp.s23
-rw-r--r--src/thread/nt64/syscall_cp.s27
2 files changed, 41 insertions, 9 deletions
diff --git a/src/thread/nt32/syscall_cp.s b/src/thread/nt32/syscall_cp.s
index 1f5142c..2b06d3b 100644
--- a/src/thread/nt32/syscall_cp.s
+++ b/src/thread/nt32/syscall_cp.s
@@ -1,19 +1,28 @@
.text
-.globl ___syscall_cp_asm
-.globl ___cp_begin
-.globl ___cp_end
+.globl ___cp_begin
+.globl ___cp_end
+.globl ___cp_cancel
+.globl ___syscall_cp_asm
+
+.def ___cp_begin; .scl 2; .type 32; .endef
+.def ___cp_end; .scl 2; .type 32; .endef
+.def ___cp_cancel; .scl 2; .type 32; .endef
+.def ___syscall_cp_asm; .scl 2; .type 32; .endef
___syscall_cp_asm:
___cp_begin:
mov (%ecx), %ecx # check content of ptr
test %ecx, %ecx
- jnz ___cancel # thread is pending cancellation
+ jnz ___cp_cancel # thread is pending cancellation
jmp ___syscall
___cp_end:
ret
+___cp_cancel:
+ jmp ___cancel
+
.section .got$___syscall_cp_asm
.global __imp____syscall_cp_asm
__imp____syscall_cp_asm:
@@ -31,3 +40,9 @@ __imp____cp_begin:
__imp____cp_end:
.long ___cp_end
.linkonce discard
+
+ .section .got$___cp_cancel
+ .global __imp____cp_cancel
+__imp____cp_cancel:
+ .long ___cp_cancel
+ .linkonce discard
diff --git a/src/thread/nt64/syscall_cp.s b/src/thread/nt64/syscall_cp.s
index 7d4cbaf..27b649d 100644
--- a/src/thread/nt64/syscall_cp.s
+++ b/src/thread/nt64/syscall_cp.s
@@ -1,13 +1,19 @@
.text
-.globl __syscall_cp_asm
-.globl __cp_begin
-.globl __cp_end
+.global __cp_begin
+.global __cp_end
+.global __cp_cancel
+.global __syscall_cp_asm
+
+.def __cp_begin; .scl 2; .type 32; .endef
+.def __cp_end; .scl 2; .type 32; .endef
+.def __cp_cancel; .scl 2; .type 32; .endef
+.def __syscall_cp_asm; .scl 2; .type 32; .endef
__syscall_cp_asm:
__cp_begin:
movq (%rcx), %rcx # check content of ptr
test %ecx, %ecx
- jnz __cancel # thread is pending cancellation
+ jnz __cp_cancel # thread is pending cancellation
movq %rdx, %rcx # move water
movq %r8, %rdx # from one glass
@@ -28,19 +34,30 @@ __cp_begin:
__cp_end:
ret
+__cp_cancel:
+ jmp __cancel
+
.section .got$__syscall_cp_asm
.global __imp___syscall_cp_asm
__imp___syscall_cp_asm:
.quad __syscall_cp_asm
-
+ .linkonce discard
.section .got$__cp_begin
.global __imp___cp_begin
__imp___cp_begin:
.quad __cp_begin
+ .linkonce discard
.section .got$__cp_end
.global __imp___cp_end
__imp___cp_end:
.quad __cp_end
+ .linkonce discard
+
+ .section .got$__cp_cancel
+ .global __imp___cp_cancel
+__imp___cp_cancel:
+ .quad __cp_cancel
+ .linkonce discard