xref: /rk3399_ARM-atf/include/arch/aarch32/assert_macros.S (revision f5478dedf9e096d9539362b38ceb096b940ba3e2)
1*f5478dedSAntonio Nino Diaz/*
2*f5478dedSAntonio Nino Diaz * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3*f5478dedSAntonio Nino Diaz *
4*f5478dedSAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause
5*f5478dedSAntonio Nino Diaz */
6*f5478dedSAntonio Nino Diaz#ifndef ASSERT_MACROS_S
7*f5478dedSAntonio Nino Diaz#define ASSERT_MACROS_S
8*f5478dedSAntonio Nino Diaz
9*f5478dedSAntonio Nino Diaz	/*
10*f5478dedSAntonio Nino Diaz	 * Assembler macro to enable asm_assert. We assume that the stack is
11*f5478dedSAntonio Nino Diaz	 * initialized prior to invoking this macro.
12*f5478dedSAntonio Nino Diaz	 */
13*f5478dedSAntonio Nino Diaz#define ASM_ASSERT(_cc) \
14*f5478dedSAntonio Nino Diaz.ifndef .L_assert_filename ;\
15*f5478dedSAntonio Nino Diaz	.pushsection .rodata.str1.1, "aS" ;\
16*f5478dedSAntonio Nino Diaz	.L_assert_filename: ;\
17*f5478dedSAntonio Nino Diaz			.string	__FILE__ ;\
18*f5478dedSAntonio Nino Diaz	.popsection ;\
19*f5478dedSAntonio Nino Diaz.endif ;\
20*f5478dedSAntonio Nino Diaz	b##_cc	300f ;\
21*f5478dedSAntonio Nino Diaz	ldr	r0, =.L_assert_filename ;\
22*f5478dedSAntonio Nino Diaz	ldr	r1, =__LINE__ ;\
23*f5478dedSAntonio Nino Diaz	b	asm_assert;\
24*f5478dedSAntonio Nino Diaz300:
25*f5478dedSAntonio Nino Diaz
26*f5478dedSAntonio Nino Diaz#endif /* ASSERT_MACROS_S */
27