blob: f453cc1b35f3657b182d5ff0455943466d9763c3 [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 "asm.h"
// Call the C _dl_start, which returns a dl_start_return_t containing the
// user entry point and its argument. Then jump to that entry point with
// the argument in the first argument register (x0, where it was placed by
// the C function's return), clearing the return address and frame pointer
// registers so the user entry point is the base of the call stack.
.hidden _start
ENTRY(_start)
bl _dl_start
mov x29, #0 // frame pointer (FP)
mov x30, #0 // return address (LR)
br x1
END(_start)