1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-19 02:29:40 +00:00

Sync in latest vDSOs from upstream.

- Use conditional instruction to simplify the ARMv6 vDSO. This means
  that we no longer perform any branching. In the failure case, we
  simply slide over the assignments of the return values.

  The vDSO could be improved even further by using stmia to do
  assignments in parallel. Unfortunately, the script used to generate
  these is not smart enough for that (yet).

  Spotted by: andrew@.

- Make the style of the i686 vDSO more similar to the others by using
  decimal literals.
This commit is contained in:
Ed Schouten 2016-09-19 17:31:05 +00:00
parent 0459a175eb
commit cbf42683f8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=305987
2 changed files with 86 additions and 124 deletions

View File

@ -38,24 +38,20 @@ ENTRY(cloudabi_sys_clock_res_get)
str r1, [sp, #-4]
mov ip, #0
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2, 0]
str r1, [r2, 4]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2, 0]
strcc r1, [r2, 4]
movcc r0, $0
bx lr
END(cloudabi_sys_clock_res_get)
ENTRY(cloudabi_sys_clock_time_get)
mov ip, #1
swi 0
bcs 1f
ldr r2, [sp, #0]
str r0, [r2, 0]
str r1, [r2, 4]
mov r0, $0
1:
ldrcc r2, [sp, #0]
strcc r0, [r2, 0]
strcc r1, [r2, 4]
movcc r0, $0
bx lr
END(cloudabi_sys_clock_time_get)
@ -75,11 +71,9 @@ ENTRY(cloudabi_sys_fd_create1)
str r1, [sp, #-4]
mov ip, #4
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_create1)
@ -88,13 +82,11 @@ ENTRY(cloudabi_sys_fd_create2)
str r2, [sp, #-8]
mov ip, #5
swi 0
ldr r2, [sp, #-4]
ldr r3, [sp, #-8]
bcs 1f
str r0, [r2]
str r1, [r3]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
ldrcc r3, [sp, #-8]
strcc r0, [r2]
strcc r1, [r3]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_create2)
@ -108,33 +100,27 @@ ENTRY(cloudabi_sys_fd_dup)
str r1, [sp, #-4]
mov ip, #7
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_dup)
ENTRY(cloudabi_sys_fd_pread)
mov ip, #8
swi 0
bcs 1f
ldr r2, [sp, #8]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #8]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_pread)
ENTRY(cloudabi_sys_fd_pwrite)
mov ip, #9
swi 0
bcs 1f
ldr r2, [sp, #8]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #8]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_pwrite)
@ -142,11 +128,9 @@ ENTRY(cloudabi_sys_fd_read)
str r3, [sp, #-4]
mov ip, #10
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_read)
@ -159,12 +143,10 @@ END(cloudabi_sys_fd_replace)
ENTRY(cloudabi_sys_fd_seek)
mov ip, #12
swi 0
bcs 1f
ldr r2, [sp, #4]
str r0, [r2, 0]
str r1, [r2, 4]
mov r0, $0
1:
ldrcc r2, [sp, #4]
strcc r0, [r2, 0]
strcc r1, [r2, 4]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_seek)
@ -190,11 +172,9 @@ ENTRY(cloudabi_sys_fd_write)
str r3, [sp, #-4]
mov ip, #16
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_fd_write)
@ -225,33 +205,27 @@ END(cloudabi_sys_file_link)
ENTRY(cloudabi_sys_file_open)
mov ip, #21
swi 0
bcs 1f
ldr r2, [sp, #8]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #8]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_file_open)
ENTRY(cloudabi_sys_file_readdir)
mov ip, #22
swi 0
bcs 1f
ldr r2, [sp, #8]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #8]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_file_readdir)
ENTRY(cloudabi_sys_file_readlink)
mov ip, #23
swi 0
bcs 1f
ldr r2, [sp, #4]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_file_readlink)
@ -318,11 +292,9 @@ END(cloudabi_sys_mem_lock)
ENTRY(cloudabi_sys_mem_map)
mov ip, #34
swi 0
bcs 1f
ldr r2, [sp, #16]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #16]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_mem_map)
@ -354,22 +326,18 @@ ENTRY(cloudabi_sys_poll)
str r3, [sp, #-4]
mov ip, #39
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_poll)
ENTRY(cloudabi_sys_poll_fd)
mov ip, #40
swi 0
bcs 1f
ldr r2, [sp, #8]
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #8]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_poll_fd)
@ -389,13 +357,11 @@ ENTRY(cloudabi_sys_proc_fork)
str r1, [sp, #-8]
mov ip, #43
swi 0
ldr r2, [sp, #-4]
ldr r3, [sp, #-8]
bcs 1f
str r0, [r2]
str r1, [r3]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
ldrcc r3, [sp, #-8]
strcc r0, [r2]
strcc r1, [r3]
movcc r0, $0
bx lr
END(cloudabi_sys_proc_fork)
@ -415,11 +381,9 @@ ENTRY(cloudabi_sys_sock_accept)
str r2, [sp, #-4]
mov ip, #46
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_sock_accept)
@ -469,11 +433,9 @@ ENTRY(cloudabi_sys_thread_create)
str r1, [sp, #-4]
mov ip, #54
swi 0
ldr r2, [sp, #-4]
bcs 1f
str r0, [r2]
mov r0, $0
1:
ldrcc r2, [sp, #-4]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_thread_create)

View File

@ -30,7 +30,7 @@
.p2align 2, 0x90; \
.global name; \
.type name, @function; \
name:
name:
#define END(name) .size name, . - name
@ -38,7 +38,7 @@ ENTRY(cloudabi_sys_clock_res_get)
mov $0, %eax
int $0x80
jc 1f
mov 0x8(%esp), %ecx
mov 8(%esp), %ecx
mov %eax, 0(%ecx)
mov %edx, 4(%ecx)
xor %eax, %eax
@ -50,7 +50,7 @@ ENTRY(cloudabi_sys_clock_time_get)
mov $1, %eax
int $0x80
jc 1f
mov 0x10(%esp), %ecx
mov 16(%esp), %ecx
mov %eax, 0(%ecx)
mov %edx, 4(%ecx)
xor %eax, %eax
@ -74,7 +74,7 @@ ENTRY(cloudabi_sys_fd_create1)
mov $4, %eax
int $0x80
jc 1f
mov 0x8(%esp), %ecx
mov 8(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -85,9 +85,9 @@ ENTRY(cloudabi_sys_fd_create2)
mov $5, %eax
int $0x80
jc 1f
mov 0x8(%esp), %ecx
mov 8(%esp), %ecx
mov %eax, (%ecx)
mov 0xc(%esp), %ecx
mov 12(%esp), %ecx
mov %edx, (%ecx)
xor %eax, %eax
1:
@ -104,7 +104,7 @@ ENTRY(cloudabi_sys_fd_dup)
mov $7, %eax
int $0x80
jc 1f
mov 0x8(%esp), %ecx
mov 8(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -115,7 +115,7 @@ ENTRY(cloudabi_sys_fd_pread)
mov $8, %eax
int $0x80
jc 1f
mov 0x18(%esp), %ecx
mov 24(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -126,7 +126,7 @@ ENTRY(cloudabi_sys_fd_pwrite)
mov $9, %eax
int $0x80
jc 1f
mov 0x18(%esp), %ecx
mov 24(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -137,7 +137,7 @@ ENTRY(cloudabi_sys_fd_read)
mov $10, %eax
int $0x80
jc 1f
mov 0x10(%esp), %ecx
mov 16(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -154,7 +154,7 @@ ENTRY(cloudabi_sys_fd_seek)
mov $12, %eax
int $0x80
jc 1f
mov 0x14(%esp), %ecx
mov 20(%esp), %ecx
mov %eax, 0(%ecx)
mov %edx, 4(%ecx)
xor %eax, %eax
@ -184,7 +184,7 @@ ENTRY(cloudabi_sys_fd_write)
mov $16, %eax
int $0x80
jc 1f
mov 0x10(%esp), %ecx
mov 16(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -219,7 +219,7 @@ ENTRY(cloudabi_sys_file_open)
mov $21, %eax
int $0x80
jc 1f
mov 0x1c(%esp), %ecx
mov 28(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -230,7 +230,7 @@ ENTRY(cloudabi_sys_file_readdir)
mov $22, %eax
int $0x80
jc 1f
mov 0x18(%esp), %ecx
mov 24(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -241,7 +241,7 @@ ENTRY(cloudabi_sys_file_readlink)
mov $23, %eax
int $0x80
jc 1f
mov 0x18(%esp), %ecx
mov 24(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -312,7 +312,7 @@ ENTRY(cloudabi_sys_mem_map)
mov $34, %eax
int $0x80
jc 1f
mov 0x20(%esp), %ecx
mov 32(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -347,7 +347,7 @@ ENTRY(cloudabi_sys_poll)
mov $39, %eax
int $0x80
jc 1f
mov 0x10(%esp), %ecx
mov 16(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -358,7 +358,7 @@ ENTRY(cloudabi_sys_poll_fd)
mov $40, %eax
int $0x80
jc 1f
mov 0x1c(%esp), %ecx
mov 28(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -380,9 +380,9 @@ ENTRY(cloudabi_sys_proc_fork)
mov $43, %eax
int $0x80
jc 1f
mov 0x4(%esp), %ecx
mov 4(%esp), %ecx
mov %eax, (%ecx)
mov 0x8(%esp), %ecx
mov 8(%esp), %ecx
mov %edx, (%ecx)
xor %eax, %eax
1:
@ -405,7 +405,7 @@ ENTRY(cloudabi_sys_sock_accept)
mov $46, %eax
int $0x80
jc 1f
mov 0xc(%esp), %ecx
mov 12(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
@ -458,7 +458,7 @@ ENTRY(cloudabi_sys_thread_create)
mov $54, %eax
int $0x80
jc 1f
mov 0x8(%esp), %ecx
mov 8(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1: