mirror of
https://github.com/mytechnotalent/Embedded-Hacking.git
synced 2026-06-06 22:33:57 +02:00
47 lines
1.5 KiB
ArmAsm
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
|