mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 07:02:06 +00:00 
			
		
		
		
	 6bc9a3966f
			
		
	
	
		6bc9a3966f
		
	
	
	
	
		
			
			This is the complete set of new arch Score's files for linux. Score instruction set support 16bits, 32bits and 64bits instruction, Score SOC had been used in game machine and LCD TV. Signed-off-by: Chen Liqin <liqin.chen@sunplusct.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
		
			
				
	
	
		
			162 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_SCORE_ASMMACRO_H
 | |
| #define _ASM_SCORE_ASMMACRO_H
 | |
| 
 | |
| #include <asm/asm-offsets.h>
 | |
| 
 | |
| #ifdef __ASSEMBLY__
 | |
| 
 | |
| .macro	SAVE_ALL
 | |
| 	mfcr	r30, cr0
 | |
| 	mv	r31, r0
 | |
| 	nop
 | |
| 	/* if UMs == 1, change stack. */
 | |
| 	slli.c	r30, r30, 28
 | |
| 	bpl	1f
 | |
| 	la	r31, kernelsp
 | |
| 	lw	r31, [r31]
 | |
| 1:
 | |
| 	mv	r30, r0
 | |
| 	addri	r0, r31, -PT_SIZE
 | |
| 
 | |
| 	sw	r30, [r0, PT_R0]
 | |
| 	.set	r1
 | |
| 	sw	r1, [r0, PT_R1]
 | |
| 	.set	nor1
 | |
| 	sw	r2, [r0, PT_R2]
 | |
| 	sw	r3, [r0, PT_R3]
 | |
| 	sw	r4, [r0, PT_R4]
 | |
| 	sw	r5, [r0, PT_R5]
 | |
| 	sw	r6, [r0, PT_R6]
 | |
| 	sw	r7, [r0, PT_R7]
 | |
| 
 | |
| 	sw	r8, [r0, PT_R8]
 | |
| 	sw	r9, [r0, PT_R9]
 | |
| 	sw	r10, [r0, PT_R10]
 | |
| 	sw	r11, [r0, PT_R11]
 | |
| 	sw	r12, [r0, PT_R12]
 | |
| 	sw	r13, [r0, PT_R13]
 | |
| 	sw	r14, [r0, PT_R14]
 | |
| 	sw	r15, [r0, PT_R15]
 | |
| 
 | |
| 	sw	r16, [r0, PT_R16]
 | |
| 	sw	r17, [r0, PT_R17]
 | |
| 	sw	r18, [r0, PT_R18]
 | |
| 	sw	r19, [r0, PT_R19]
 | |
| 	sw	r20, [r0, PT_R20]
 | |
| 	sw	r21, [r0, PT_R21]
 | |
| 	sw	r22, [r0, PT_R22]
 | |
| 	sw	r23, [r0, PT_R23]
 | |
| 
 | |
| 	sw	r24, [r0, PT_R24]
 | |
| 	sw	r25, [r0, PT_R25]
 | |
| 	sw	r25, [r0, PT_R25]
 | |
| 	sw	r26, [r0, PT_R26]
 | |
| 	sw	r27, [r0, PT_R27]
 | |
| 
 | |
| 	sw	r28, [r0, PT_R28]
 | |
| 	sw	r29, [r0, PT_R29]
 | |
| 	orri	r28, r0, 0x1fff
 | |
| 	li	r31, 0x00001fff
 | |
| 	xor	r28, r28, r31
 | |
| 
 | |
| 	mfcehl	r30, r31
 | |
| 	sw	r30, [r0, PT_CEH]
 | |
| 	sw	r31, [r0, PT_CEL]
 | |
| 
 | |
| 	mfcr	r31, cr0
 | |
| 	sw	r31, [r0, PT_PSR]
 | |
| 
 | |
| 	mfcr	r31, cr1
 | |
| 	sw	r31, [r0, PT_CONDITION]
 | |
| 
 | |
| 	mfcr	r31, cr2
 | |
| 	sw	r31, [r0, PT_ECR]
 | |
| 	
 | |
| 	mfcr	r31, cr5
 | |
| 	srli	r31, r31, 1
 | |
| 	slli	r31, r31, 1
 | |
| 	sw	r31, [r0, PT_EPC]
 | |
| .endm
 | |
| 
 | |
| .macro	RESTORE_ALL_AND_RET
 | |
| 	mfcr	r30, cr0
 | |
| 	srli	r30, r30, 1
 | |
| 	slli	r30, r30, 1
 | |
| 	mtcr	r30, cr0
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 
 | |
| 	.set	r1
 | |
| 	ldis	r1, 0x00ff
 | |
| 	and	r30, r30, r1
 | |
| 	not	r1, r1
 | |
| 	lw	r31, [r0, PT_PSR]
 | |
| 	and	r31, r31, r1
 | |
| 	.set	nor1
 | |
| 	or	r31, r31, r30
 | |
| 	mtcr	r31, cr0
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 
 | |
| 	lw	r30, [r0, PT_CONDITION]
 | |
| 	mtcr	r30, cr1
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 
 | |
| 	lw	r30, [r0, PT_CEH]
 | |
| 	lw	r31, [r0, PT_CEL]
 | |
| 	mtcehl	r30, r31
 | |
| 
 | |
| 	.set	r1
 | |
| 	lw	r1, [r0, PT_R1]
 | |
| 	.set	nor1
 | |
| 	lw	r2, [r0, PT_R2]
 | |
| 	lw	r3, [r0, PT_R3]
 | |
| 	lw	r4, [r0, PT_R4]
 | |
| 	lw	r5, [r0, PT_R5]
 | |
| 	lw	r6, [r0, PT_R6]
 | |
| 	lw	r7, [r0, PT_R7]
 | |
| 
 | |
| 	lw	r8, [r0, PT_R8]
 | |
| 	lw	r9, [r0, PT_R9]
 | |
| 	lw	r10, [r0, PT_R10]
 | |
| 	lw	r11, [r0, PT_R11]
 | |
| 	lw	r12, [r0, PT_R12]
 | |
| 	lw	r13, [r0, PT_R13]
 | |
| 	lw	r14, [r0, PT_R14]
 | |
| 	lw	r15, [r0, PT_R15]
 | |
| 
 | |
| 	lw	r16, [r0, PT_R16]
 | |
| 	lw	r17, [r0, PT_R17]
 | |
| 	lw	r18, [r0, PT_R18]
 | |
| 	lw	r19, [r0, PT_R19]
 | |
| 	lw	r20, [r0, PT_R20]
 | |
| 	lw	r21, [r0, PT_R21]
 | |
| 	lw	r22, [r0, PT_R22]
 | |
| 	lw	r23, [r0, PT_R23]
 | |
| 
 | |
| 	lw	r24, [r0, PT_R24]
 | |
| 	lw	r25, [r0, PT_R25]
 | |
| 	lw	r26, [r0, PT_R26]
 | |
| 	lw	r27, [r0, PT_R27]
 | |
| 	lw	r28, [r0, PT_R28]
 | |
| 	lw	r29, [r0, PT_R29]
 | |
| 
 | |
| 	lw	r30, [r0, PT_EPC]
 | |
| 	lw	r0, [r0, PT_R0]
 | |
| 	mtcr	r30, cr5
 | |
| 	rte
 | |
| .endm
 | |
| 
 | |
| #endif /* __ASSEMBLY__ */
 | |
| #endif /* _ASM_SCORE_ASMMACRO_H */
 |