xref: /optee_os/ta/arch/arm/ta_entry_a32.S (revision d99255362ca1ede7e30c14ea657082caa60de09c)
1c8061893SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */
2c8061893SJerome Forissier/*
3c8061893SJerome Forissier * Copyright (c) 2019, Linaro Limited
4c8061893SJerome Forissier */
5c8061893SJerome Forissier
6c8061893SJerome Forissier#include <asm.S>
7c8061893SJerome Forissier
8*d9925536SJerome Forissier	.section .note.GNU-stack,"",%progbits
9*d9925536SJerome Forissier
10c8061893SJerome Forissier/*
11c8061893SJerome Forissier * This function is the bottom of the user call stack. Mark it as such so that
12c8061893SJerome Forissier * the unwinding code won't try to go further down.
13c8061893SJerome Forissier * We need an assembly wrapper because Clang does not accept asm(".cantunwind")
14c8061893SJerome Forissier * in a C function:
15c8061893SJerome Forissier *
16c8061893SJerome Forissier *  user_ta_header.c:44:6: error: .fnstart must precede .cantunwind directive
17c8061893SJerome Forissier *          asm(".cantunwind");
18c8061893SJerome Forissier *              ^
19c8061893SJerome Forissier */
20c8061893SJerome ForissierFUNC __ta_entry, :
21c8061893SJerome ForissierUNWIND(	.cantunwind)
22c8061893SJerome Forissier	bl	__ta_entry_c
23c8061893SJerome ForissierEND_FUNC __ta_entry
24