Files
Embedded-Hacking/drivers/0x01_uart_asm_arm/coprocessor.s
T
2026-03-27 11:19:24 -04:00

47 lines
1.5 KiB
ArmAsm

/**
* 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