43382ded6d
Also removed some redundant test code. Change-Id: Idbb343d35592816814d473de2317324029481c6f Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-mac-debug-x64-try,vm-kernel-reload-mac-debug-simdbc64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105590 Commit-Queue: Samir Jindel <sjindel@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
45 lines
704 B
ArmAsm
45 lines
704 B
ArmAsm
.intel_syntax noprefix
|
|
.text
|
|
|
|
.globl _ClobberAndCall
|
|
_ClobberAndCall:
|
|
.globl ClobberAndCall
|
|
ClobberAndCall:
|
|
|
|
/* Clobber some significant registers and call the nullary function which is
|
|
passed in as the first argument. */
|
|
|
|
/* Pool pointer register. */
|
|
push r15
|
|
mov r15, 1
|
|
|
|
/* Thread register. */
|
|
push r14
|
|
mov r14, 1
|
|
|
|
/* Code register. */
|
|
push r12
|
|
mov r12, 1
|
|
|
|
/* Arguments descriptor register (volatile). */
|
|
mov r10, 1
|
|
|
|
/* Clobber all other volatile registers (except the argument). */
|
|
mov rax, 1
|
|
mov rcx, 1
|
|
mov rdx, 1
|
|
mov rsi, 1
|
|
mov r8, 1
|
|
mov r9, 1
|
|
mov r11, 1
|
|
|
|
/* Stack must be 16-byte aligned before the call. We save three registers above
|
|
to ensure this. */
|
|
call rdi
|
|
|
|
pop r12
|
|
pop r14
|
|
pop r15
|
|
|
|
ret
|