15b743698SCarlo Caione/* 2*821781f3SCarlo Caione * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. 35b743698SCarlo Caione * 45b743698SCarlo Caione * SPDX-License-Identifier: BSD-3-Clause 55b743698SCarlo Caione */ 65b743698SCarlo Caione 75b743698SCarlo Caione#ifndef PLAT_MACROS_S 85b743698SCarlo Caione#define PLAT_MACROS_S 95b743698SCarlo Caione 105b743698SCarlo Caione#include <drivers/arm/gicv2.h> 115b743698SCarlo Caione#include <platform_def.h> 125b743698SCarlo Caione 135b743698SCarlo Caione.section .rodata.gic_reg_name, "aS" 145b743698SCarlo Caione 155b743698SCarlo Caionegicc_regs: 165b743698SCarlo Caione .asciz "gicc_hppir", "gicc_ahppir", "gicc_ctlr", "" 175b743698SCarlo Caionegicd_pend_reg: 185b743698SCarlo Caione .asciz "gicd_ispendr regs (Offsets 0x200 - 0x278)\n Offset:\t\t\tvalue\n" 195b743698SCarlo Caionenewline: 205b743698SCarlo Caione .asciz "\n" 215b743698SCarlo Caionespacer: 225b743698SCarlo Caione .asciz ":\t\t0x" 235b743698SCarlo Caione 245b743698SCarlo Caione /* --------------------------------------------- 255b743698SCarlo Caione * The below required platform porting macro 265b743698SCarlo Caione * prints out relevant GIC and CCI registers 275b743698SCarlo Caione * whenever an unhandled exception is taken in 285b743698SCarlo Caione * BL31. 295b743698SCarlo Caione * Clobbers: x0 - x10, x16, x17, sp 305b743698SCarlo Caione * --------------------------------------------- 315b743698SCarlo Caione */ 325b743698SCarlo Caione .macro plat_crash_print_regs 335b743698SCarlo Caione 345b743698SCarlo Caione /* GICC registers */ 355b743698SCarlo Caione 36*821781f3SCarlo Caione mov_imm x17, AML_GICC_BASE 375b743698SCarlo Caione 385b743698SCarlo Caione adr x6, gicc_regs 395b743698SCarlo Caione ldr w8, [x17, #GICC_HPPIR] 405b743698SCarlo Caione ldr w9, [x17, #GICC_AHPPIR] 415b743698SCarlo Caione ldr w10, [x17, #GICC_CTLR] 425b743698SCarlo Caione bl str_in_crash_buf_print 435b743698SCarlo Caione 445b743698SCarlo Caione /* GICD registers */ 455b743698SCarlo Caione 46*821781f3SCarlo Caione mov_imm x16, AML_GICD_BASE 475b743698SCarlo Caione 485b743698SCarlo Caione add x7, x16, #GICD_ISPENDR 495b743698SCarlo Caione adr x4, gicd_pend_reg 505b743698SCarlo Caione bl asm_print_str 515b743698SCarlo Caione 525b743698SCarlo Caionegicd_ispendr_loop: 535b743698SCarlo Caione sub x4, x7, x16 545b743698SCarlo Caione cmp x4, #0x280 555b743698SCarlo Caione b.eq exit_print_gic_regs 565b743698SCarlo Caione bl asm_print_hex 575b743698SCarlo Caione 585b743698SCarlo Caione adr x4, spacer 595b743698SCarlo Caione bl asm_print_str 605b743698SCarlo Caione 615b743698SCarlo Caione ldr x4, [x7], #8 625b743698SCarlo Caione bl asm_print_hex 635b743698SCarlo Caione 645b743698SCarlo Caione adr x4, newline 655b743698SCarlo Caione bl asm_print_str 665b743698SCarlo Caione b gicd_ispendr_loop 675b743698SCarlo Caioneexit_print_gic_regs: 685b743698SCarlo Caione 695b743698SCarlo Caione .endm 705b743698SCarlo Caione 715b743698SCarlo Caione#endif /* PLAT_MACROS_S */ 72