/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CSKY_ENTRY_H
#define __ASM_CSKY_ENTRY_H
#include <asm /setup.h>
#include <abi/regdef.h>
#define LSAVE_PC 8
#define LSAVE_PSR 12
#define LSAVE_A0 24
#define LSAVE_A1 28
#define LSAVE_A2 32
#define LSAVE_A3 36
#define LSAVE_A4 40
#define LSAVE_A5 44
#define usp ss1
.macro USPTOKSP
mtcr sp, usp
mfcr sp, ss0
.endm
.macro KSPTOUSP
mtcr sp, ss0
mfcr sp, usp
.endm
.macro SAVE_ALL epc_inc
mtcr r13, ss2
mfcr r13, epsr
btsti r13, 31
bt 1 f
USPTOKSP
1 :
subi sp, 32
subi sp, 32
subi sp, 16
stw r13, (sp, 12 )
stw lr, (sp, 4 )
mfcr lr, epc
movi r13, \epc_inc
add lr, r13
stw lr, (sp, 8 )
mov lr, sp
addi lr, 32
addi lr, 32
addi lr, 16
bt 2 f
mfcr lr, ss1
2 :
stw lr, (sp, 16 )
stw a0, (sp, 20 )
stw a0, (sp, 24 )
stw a1, (sp, 28 )
stw a2, (sp, 32 )
stw a3, (sp, 36 )
addi sp, 32
addi sp, 8
mfcr r13, ss2
stw r6, (sp)
stw r7, (sp, 4 )
stw r8, (sp, 8 )
stw r9, (sp, 12 )
stw r10, (sp, 16 )
stw r11, (sp, 20 )
stw r12, (sp, 24 )
stw r13, (sp, 28 )
stw r14, (sp, 32 )
stw r1, (sp, 36 )
subi sp, 32
subi sp, 8
.endm
.macro RESTORE_ALL
ldw lr, (sp, 4 )
ldw a0, (sp, 8 )
mtcr a0, epc
ldw a0, (sp, 12 )
mtcr a0, epsr
btsti a0, 31
bt 1 f
ldw a0, (sp, 16 )
mtcr a0, ss1
1 :
ldw a0, (sp, 24 )
ldw a1, (sp, 28 )
ldw a2, (sp, 32 )
ldw a3, (sp, 36 )
addi sp, 32
addi sp, 8
ldw r6, (sp)
ldw r7, (sp, 4 )
ldw r8, (sp, 8 )
ldw r9, (sp, 12 )
ldw r10, (sp, 16 )
ldw r11, (sp, 20 )
ldw r12, (sp, 24 )
ldw r13, (sp, 28 )
ldw r14, (sp, 32 )
ldw r1, (sp, 36 )
addi sp, 32
addi sp, 8
bt 2 f
KSPTOUSP
2 :
rte
.endm
.macro SAVE_SWITCH_STACK
subi sp, 32
stm r8-r15, (sp)
.endm
.macro RESTORE_SWITCH_STACK
ldm r8-r15, (sp)
addi sp, 32
.endm
/* MMU registers operators. */
.macro RD_MIR rx
cprcr \rx, cpcr0
.endm
.macro RD_MEH rx
cprcr \rx, cpcr4
.endm
.macro RD_MCIR rx
cprcr \rx, cpcr8
.endm
.macro RD_PGDR rx
cprcr \rx, cpcr29
.endm
.macro WR_MEH rx
cpwcr \rx, cpcr4
.endm
.macro WR_MCIR rx
cpwcr \rx, cpcr8
.endm
.macro SETUP_MMU
/* Init psr and enable ee */
lrw r6, DEFAULT_PSR_VALUE
mtcr r6, psr
psrset ee
/* Select MMU as co-processor */
cpseti cp15
/*
* cpcr30 format:
* 31 - 29 | 28 - 4 | 3 | 2 | 1 | 0
* BA Reserved C D V
*/
cprcr r6, cpcr30
lsri r6, 29
lsli r6, 29
addi r6, 0 xe
cpwcr r6, cpcr30
movi r6, 0
cpwcr r6, cpcr31
.endm
#endif /* __ASM_CSKY_ENTRY_H */
Messung V0.5 in Prozent C=95 H=93 G=93
¤ Dauer der Verarbeitung: 0.7 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland