blob: 9147c4b612db2cbb2c6b22afc340b27d4fa1ea6d [file] [edit]
/*
* Copyright (c) 2015 The Native Client Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "native_client/src/include/build_config.h"
#include "native_client/src/trusted/service_runtime/include/bits/nacl_syscalls.h"
#include "native_client/src/trusted/service_runtime/nacl_config.h"
/*
* This is a tiny program that contains only a code section and no other
* non-code sections at all. It just exits successfully.
*/
.text
.globl _start
_start:
#if NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86
xor %edi, %edi
push %edi
call NACL_SYSCALL_ADDR(NACL_sys_exit)
hlt
#elif NACL_ARCH(NACL_BUILD_ARCH) == NACL_arm
movw ip, #:lower16:(NACL_SYSCALL_ADDR(NACL_sys_exit))
movt ip, #:upper16:(NACL_SYSCALL_ADDR(NACL_sys_exit))
mov r0, #0
sfi_blx ip
.inst NACL_HALT_OPCODE
#elif NACL_ARCH(NACL_BUILD_ARCH) == NACL_mips
lui $t9, %hi(NACL_SYSCALL_ADDR(NACL_sys_exit))
addiu $t9, $t9, %lo(NACL_SYSCALL_ADDR(NACL_sys_exit))
addu $a0, $zero, $s0
nop
nop
and $t9, $t9, $t6
jalr $t9
nop
#else /* NACL_ARCH(NACL_BUILD_ARCH) */
# error Unknown platform!
#endif /* NACL_ARCH(NACL_BUILD_ARCH) */