25 # NOTE WELL! The _Copy functions are called directly
26 # from server-compiler-generated code via CallLeafNoFP,
27 # which means that they *must* either not use floating
28 # point or use it in the same manner as does the server
29 # compiler.
30
31 .globl _Copy_conjoint_bytes
32 .globl _Copy_arrayof_conjoint_bytes
33 .globl _Copy_conjoint_jshorts_atomic
34 .globl _Copy_arrayof_conjoint_jshorts
35 .globl _Copy_conjoint_jints_atomic
36 .globl _Copy_arrayof_conjoint_jints
37 .globl _Copy_conjoint_jlongs_atomic
38 .globl _mmx_Copy_arrayof_conjoint_jshorts
39
40 .globl _Atomic_cmpxchg_long
41 .globl _Atomic_move_long
42
43 .text
44
45 .globl SpinPause
46 .type SpinPause,@function
47 .p2align 4,,15
48 SpinPause:
49 rep
50 nop
51 movl $1, %eax
52 ret
53
54 # Support for void Copy::conjoint_bytes(void* from,
55 # void* to,
56 # size_t count)
57 .p2align 4,,15
58 .type _Copy_conjoint_bytes,@function
59 _Copy_conjoint_bytes:
60 pushl %esi
61 movl 4+12(%esp),%ecx # count
62 pushl %edi
63 movl 8+ 4(%esp),%esi # from
64 movl 8+ 8(%esp),%edi # to
65 cmpl %esi,%edi
66 leal -1(%esi,%ecx),%eax # from + count - 1
67 jbe cb_CopyRight
68 cmpl %eax,%edi
69 jbe cb_CopyLeft
70 # copy from low to high
71 cb_CopyRight:
72 cmpl $3,%ecx
73 jbe 5f # <= 3 bytes
|
25 # NOTE WELL! The _Copy functions are called directly
26 # from server-compiler-generated code via CallLeafNoFP,
27 # which means that they *must* either not use floating
28 # point or use it in the same manner as does the server
29 # compiler.
30
31 .globl _Copy_conjoint_bytes
32 .globl _Copy_arrayof_conjoint_bytes
33 .globl _Copy_conjoint_jshorts_atomic
34 .globl _Copy_arrayof_conjoint_jshorts
35 .globl _Copy_conjoint_jints_atomic
36 .globl _Copy_arrayof_conjoint_jints
37 .globl _Copy_conjoint_jlongs_atomic
38 .globl _mmx_Copy_arrayof_conjoint_jshorts
39
40 .globl _Atomic_cmpxchg_long
41 .globl _Atomic_move_long
42
43 .text
44
45 # Support for void Copy::conjoint_bytes(void* from,
46 # void* to,
47 # size_t count)
48 .p2align 4,,15
49 .type _Copy_conjoint_bytes,@function
50 _Copy_conjoint_bytes:
51 pushl %esi
52 movl 4+12(%esp),%ecx # count
53 pushl %edi
54 movl 8+ 4(%esp),%esi # from
55 movl 8+ 8(%esp),%edi # to
56 cmpl %esi,%edi
57 leal -1(%esi,%ecx),%eax # from + count - 1
58 jbe cb_CopyRight
59 cmpl %eax,%edi
60 jbe cb_CopyLeft
61 # copy from low to high
62 cb_CopyRight:
63 cmpl $3,%ecx
64 jbe 5f # <= 3 bytes
|