/** * FILE: coprocessor.s * * DESCRIPTION: * RP2350 Coprocessor Access Functions. * * BRIEF: * Provides functions to enable coprocessor access control. * * AUTHOR: Kevin Thomas * CREATION DATE: November 27, 2025 * UPDATE DATE: November 27, 2025 */ .syntax unified // use unified assembly syntax .cpu cortex-m33 // target Cortex-M33 core .thumb // use Thumb instruction set .include "constants.s" /** * Initialize the .text section. * The .text section contains executable code. */ .section .text // code section .align 2 // align to 4-byte boundary /** * @brief Enable coprocessor access. * * @details Grants full access to coprocessor 0 via CPACR. * * @param None * @retval None */ .global Enable_Coprocessor .type Enable_Coprocessor , %function Enable_Coprocessor: ldr r0, =CPACR // load CPACR address ldr r1, [r0] // read CPACR value orr r1, r1, #(1<<1) // set CP0: Ctrl access priv coproc 0 bit orr r1, r1, #(1<<0) // set CP0: Ctrl access priv coproc 0 bit str r1, [r0] // store value into CPACR dsb // data sync barrier isb // instruction sync barrier bx lr // return