1*83271d5aSArvind Ram Prakash /* 2*83271d5aSArvind Ram Prakash * Copyright (c) 2024, Arm Limited. All rights reserved. 3*83271d5aSArvind Ram Prakash * 4*83271d5aSArvind Ram Prakash * SPDX-License-Identifier: BSD-3-Clause 5*83271d5aSArvind Ram Prakash */ 6*83271d5aSArvind Ram Prakash 7*83271d5aSArvind Ram Prakash #include <arch.h> 8*83271d5aSArvind Ram Prakash #include <arch_features.h> 9*83271d5aSArvind Ram Prakash #include <arch_helpers.h> 10*83271d5aSArvind Ram Prakash #include <lib/extensions/debug_v8p9.h> 11*83271d5aSArvind Ram Prakash 12*83271d5aSArvind Ram Prakash void debugv8p9_extended_bp_wp_enable(cpu_context_t *ctx) 13*83271d5aSArvind Ram Prakash { 14*83271d5aSArvind Ram Prakash el3_state_t *state = get_el3state_ctx(ctx); 15*83271d5aSArvind Ram Prakash u_register_t mdcr_el3_val = read_ctx_reg(state, CTX_MDCR_EL3); 16*83271d5aSArvind Ram Prakash 17*83271d5aSArvind Ram Prakash /* When FEAT_Debugv8p9 is implemented: 18*83271d5aSArvind Ram Prakash * 19*83271d5aSArvind Ram Prakash * MDCR_EL3.EBWE: Set to 0b1 20*83271d5aSArvind Ram Prakash * Enables use of additional breakpoints or watchpoints, 21*83271d5aSArvind Ram Prakash * and disables trap to EL3 on accesses to debug register. 22*83271d5aSArvind Ram Prakash */ 23*83271d5aSArvind Ram Prakash 24*83271d5aSArvind Ram Prakash mdcr_el3_val |= MDCR_EBWE_BIT; 25*83271d5aSArvind Ram Prakash write_ctx_reg(state, CTX_MDCR_EL3, mdcr_el3_val); 26*83271d5aSArvind Ram Prakash } 27