27 lines
680 B
ArmAsm
27 lines
680 B
ArmAsm
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
#include "textflag.h"
|
|
|
|
// func readCSR(csr int64) int64
|
|
TEXT ·readCSR(SB), NOSPLIT, $0-16
|
|
MOV a+0(FP), X10
|
|
CSRRS $0x300, X0, X11
|
|
MOV X11, ret+8(FP)
|
|
RET
|
|
|
|
// func setCSRBit(csr, bit int64) int64
|
|
TEXT ·setCSRBit(SB), NOSPLIT, $0-24
|
|
MOV a+0(FP), X10
|
|
MOV b+8(FP), X11
|
|
CSRRS $0x304, X11, X12
|
|
MOV X12, ret+16(FP)
|
|
RET
|
|
|
|
// func writeCSR(val int64) int64
|
|
TEXT ·writeCSR(SB), NOSPLIT, $0-16
|
|
MOV a+0(FP), X10
|
|
CSRRW $0x305, X10, X11
|
|
MOV X11, ret+8(FP)
|
|
RET
|