183271d5aSArvind Ram Prakash /* 2*482fbf81SGovindraj Raja * Copyright (c) 2025, Arm Limited. All rights reserved. 383271d5aSArvind Ram Prakash * 483271d5aSArvind Ram Prakash * SPDX-License-Identifier: BSD-3-Clause 583271d5aSArvind Ram Prakash */ 683271d5aSArvind Ram Prakash 783271d5aSArvind Ram Prakash #include <arch.h> 883271d5aSArvind Ram Prakash #include <arch_features.h> 983271d5aSArvind Ram Prakash #include <arch_helpers.h> 1083271d5aSArvind Ram Prakash #include <lib/extensions/debug_v8p9.h> 1183271d5aSArvind Ram Prakash debugv8p9_extended_bp_wp_enable(cpu_context_t * ctx)1283271d5aSArvind Ram Prakashvoid debugv8p9_extended_bp_wp_enable(cpu_context_t *ctx) 1383271d5aSArvind Ram Prakash { 1483271d5aSArvind Ram Prakash el3_state_t *state = get_el3state_ctx(ctx); 15*482fbf81SGovindraj Raja u_register_t mdcr_el3_val; 1683271d5aSArvind Ram Prakash 17*482fbf81SGovindraj Raja if (read_brps_id_field() > 0U) { 18*482fbf81SGovindraj Raja mdcr_el3_val = read_ctx_reg(state, CTX_MDCR_EL3); 1983271d5aSArvind Ram Prakash /* When FEAT_Debugv8p9 is implemented: 2083271d5aSArvind Ram Prakash * 2183271d5aSArvind Ram Prakash * MDCR_EL3.EBWE: Set to 0b1 2283271d5aSArvind Ram Prakash * Enables use of additional breakpoints or watchpoints, 2383271d5aSArvind Ram Prakash * and disables trap to EL3 on accesses to debug register. 2483271d5aSArvind Ram Prakash */ 2583271d5aSArvind Ram Prakash mdcr_el3_val |= MDCR_EBWE_BIT; 2683271d5aSArvind Ram Prakash write_ctx_reg(state, CTX_MDCR_EL3, mdcr_el3_val); 2783271d5aSArvind Ram Prakash } 28*482fbf81SGovindraj Raja } 29