9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 79ac708e61b0e12d51916dea4f548b3968fb6e39
parent c8e0b8c035409bc5a289288ec69ccfe74b35deb4
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Sun, 14 Oct 2018 10:25:51 +0100

[arm64] Add some more accessors for reading/writing sysregs

Change-Id: I4da13b6f9b344ec17fad9a2d983b1fee9f3164cb
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>

Diffstat:
March/arm64/arch.s | 47++++++++++++++++++++++++++++++++++++++++++++++-
Minclude/rcode.h | 10++++++++++
2 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/arch.s b/arch/arm64/arch.s @@ -4,8 +4,13 @@ DAIF_ABT = 2 DAIF_DBG = 4 .text - .globl panic,enaabt,disabt,enadbg,disdbg,wfi,wfe,swtch + .globl panic,enaabt,disabt,enadbg,disdbg,wfi,wfe + .globl read_actlr_r,write_actlr_r + .globl read_id_aa64rmfr0_r,write_id_aa64rmfr0_r + .globl read_rcr_r,write_rcr_r,read_rdscr_r,write_rdscr_r + .globl read_sctlr_rwrite_sctlr_r, .globl read_rvbar_el3 + .globl swtch .align 2 panic: @@ -60,6 +65,46 @@ wfi: wfi wfe: wfe ret +read_actlr_r: + mrs x0,S3_6_C1_C0_3 + ret + +write_actlr_r: + msr S3_6_C1_C0_3,x0 + ret + +read_id_aa64rmfr0_r: + mrs x0,S3_6_C0_C7_6 + ret + +write_id_aa64rmfr0_r: + msr S3_6_C0_C7_6,x0 + ret + +read_rcr_r: + mrs x0,S3_6_C1_C1_6 + ret + +write_rcr_r: + msr S3_6_C1_C1_6,x0 + ret + +read_rdscr_r: + mrs x0,S3_6_C6_C15_6 + ret + +write_rdscr_r: + msr S3_6_C6_C15_6,x0 + ret + +read_sctlr_r: + mrs x0,S3_6_C1_C0_6 + ret + +write_sctlr_r: + msr S3_6_C1_C0_6,x0 + ret + read_rvbar_el3: mrs x0,rvbar_el3 ret diff --git a/include/rcode.h b/include/rcode.h @@ -65,6 +65,16 @@ extern void enadbg(void); extern void disdbg(void); extern void wfi(void); extern void wfe(void); +extern unsigned long long read_actlr_r(void); +extern void write_actlr_r(unsigned long long v); +extern unsigned long long read_id_aa64rmfr0_r(void); +extern void write_id_aa64rmfr0_r(unsigned long long v); +extern unsigned long long read_rcr_r(void); +extern void write_rcr_r(unsigned long long v); +extern unsigned long long read_rdscr_r(void); +extern void write_rdscr_r(unsigned long long v); +extern unsigned long long read_sctlr_r(void); +extern void write_sctlr_r(unsigned long long v); extern unsigned long long read_rvbar_el3(void); /* global constant variables */