Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
      3  *
      4  * SPDX-License-Identifier: BSD-3-Clause
      5  */
      6 #ifndef __PLAT_MACROS_S__
      7 #define __PLAT_MACROS_S__
      8 
      9 #include <arm_macros.S>
     10 #include <v2m_def.h>
     11 #include "../fvp_def.h"
     12 
     13 	/* ---------------------------------------------
     14 	 * The below required platform porting macro
     15 	 * prints out relevant GIC registers whenever an
     16 	 * unhandled exception is taken in BL31.
     17 	 * Clobbers: x0 - x10, x16, x17, sp
     18 	 * ---------------------------------------------
     19 	 */
     20 	.macro plat_crash_print_regs
     21 	/*
     22 	 * Detect if we're using the base memory map or
     23 	 * the legacy VE memory map
     24 	 */
     25 	mov_imm	x0, (V2M_SYSREGS_BASE + V2M_SYS_ID)
     26 	ldr	w16, [x0]
     27 	/* Extract BLD (12th - 15th bits) from the SYS_ID */
     28 	ubfx	x16, x16, #V2M_SYS_ID_BLD_SHIFT, #4
     29 	/* Check if VE mmap */
     30 	cmp	w16, #BLD_GIC_VE_MMAP
     31 	b.eq	use_ve_mmap
     32 	/* Assume Base Cortex mmap */
     33 	mov_imm	x17, BASE_GICC_BASE
     34 	mov_imm	x16, BASE_GICD_BASE
     35 	b	print_gic_regs
     36 use_ve_mmap:
     37 	mov_imm	x17, VE_GICC_BASE
     38 	mov_imm	x16, VE_GICD_BASE
     39 print_gic_regs:
     40 	arm_print_gic_regs
     41 	.endm
     42 
     43 #endif /* __PLAT_MACROS_S__ */
     44