Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *	arch/alpha/lib/callback_srm.S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <asm/console.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <asm/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #define HWRPB_CRB_OFFSET 0xc0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #if defined(CONFIG_ALPHA_SRM) || defined(CONFIG_ALPHA_GENERIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) .align 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) srm_dispatch:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #if defined(CONFIG_ALPHA_GENERIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	ldl	$4,alpha_using_srm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	beq	$4,nosrm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	ldq	$0,hwrpb	# gp is set up by CALLBACK macro.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	ldl	$25,0($25)	# Pick up the wrapper data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	mov	$20,$21		# Shift arguments right.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	mov	$19,$20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	ldq	$1,HWRPB_CRB_OFFSET($0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	mov	$18,$19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	mov	$17,$18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	mov	$16,$17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	addq	$0,$1,$2	# CRB address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	ldq	$27,0($2)	# DISPATCH procedure descriptor (VMS call std)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	extwl	$25,0,$16	# SRM callback function code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	ldq	$3,8($27)	# call address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	extwl	$25,2,$25	# argument information (VMS calling std)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	jmp	($3)		# Return directly to caller of wrapper.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) .align 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) .globl	srm_fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) .ent	srm_fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) srm_fixup:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	ldgp	$29,0($27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #if defined(CONFIG_ALPHA_GENERIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	ldl	$4,alpha_using_srm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	beq	$4,nosrm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	ldq	$0,hwrpb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	ldq	$1,HWRPB_CRB_OFFSET($0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	addq	$0,$1,$2	# CRB address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	ldq	$27,16($2)	# VA of FIXUP procedure descriptor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	ldq	$3,8($27)	# call address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	lda	$25,2($31)	# two integer arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	jmp	($3)		# Return directly to caller of srm_fixup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) .end    srm_fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #if defined(CONFIG_ALPHA_GENERIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) .align 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) nosrm:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	lda	$0,-1($31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define CALLBACK(NAME, CODE, ARG_CNT) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) .align 4; .globl callback_##NAME; .ent callback_##NAME; callback_##NAME##: \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) ldgp $29,0($27); br $25,srm_dispatch; .word CODE, ARG_CNT; .end callback_##NAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #else /* defined(CONFIG_ALPHA_SRM) || defined(CONFIG_ALPHA_GENERIC) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define CALLBACK(NAME, CODE, ARG_CNT) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) .align 3; .globl callback_##NAME; .ent callback_##NAME; callback_##NAME##: \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) lda $0,-1($31); ret; .end callback_##NAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) .align 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) .globl	srm_fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) .ent	srm_fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) srm_fixup:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	lda	$0,-1($31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) .end	srm_fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #endif /* defined(CONFIG_ALPHA_SRM) || defined(CONFIG_ALPHA_GENERIC) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) CALLBACK(puts, CCB_PUTS, 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) CALLBACK(open, CCB_OPEN, 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) CALLBACK(close, CCB_CLOSE, 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) CALLBACK(read, CCB_READ, 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) CALLBACK(open_console, CCB_OPEN_CONSOLE, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) CALLBACK(close_console, CCB_CLOSE_CONSOLE, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) CALLBACK(getenv, CCB_GET_ENV, 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) CALLBACK(setenv, CCB_SET_ENV, 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) CALLBACK(getc, CCB_GETC, 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) CALLBACK(reset_term, CCB_RESET_TERM, 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) CALLBACK(term_int, CCB_SET_TERM_INT, 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) CALLBACK(term_ctl, CCB_SET_TERM_CTL, 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) CALLBACK(process_keycode, CCB_PROCESS_KEYCODE, 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) CALLBACK(ioctl, CCB_IOCTL, 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) CALLBACK(write, CCB_WRITE, 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) CALLBACK(reset_env, CCB_RESET_ENV, 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) CALLBACK(save_env, CCB_SAVE_ENV, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) CALLBACK(pswitch, CCB_PSWITCH, 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) CALLBACK(bios_emul, CCB_BIOS_EMUL, 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) EXPORT_SYMBOL(callback_getenv)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) EXPORT_SYMBOL(callback_setenv)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) EXPORT_SYMBOL(callback_save_env)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) .data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) __alpha_using_srm:		# For use by bootpheader
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	.long 7			# value is not 1 for link debugging
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	.weak alpha_using_srm; alpha_using_srm = __alpha_using_srm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) __callback_init_done:		# For use by bootpheader
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	.long 7			# value is not 1 for link debugging
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	.weak callback_init_done; callback_init_done = __callback_init_done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)