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)  * SHcompact irqflags support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  * Copyright (C) 2006 - 2009 Paul Mundt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <linux/irqflags.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) void notrace arch_local_irq_restore(unsigned long flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 	unsigned long __dummy0, __dummy1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	if (flags == ARCH_IRQ_DISABLED) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 		__asm__ __volatile__ (
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 			"stc	sr, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 			"or	#0xf0, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 			"ldc	%0, sr\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 			: "=&z" (__dummy0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 			: /* no inputs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 			: "memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 		);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 		__asm__ __volatile__ (
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 			"stc	sr, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 			"and	%1, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #ifdef CONFIG_CPU_HAS_SR_RB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 			"stc	r6_bank, %1\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 			"or	%1, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 			"ldc	%0, sr\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 			: "=&r" (__dummy0), "=r" (__dummy1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 			: "1" (~ARCH_IRQ_DISABLED)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 			: "memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 		);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) EXPORT_SYMBOL(arch_local_irq_restore);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) unsigned long notrace arch_local_save_flags(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	unsigned long flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	__asm__ __volatile__ (
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 		"stc	sr, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 		"and	#0xf0, %0\n\t"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 		: "=&z" (flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 		: /* no inputs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 		: "memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	return flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) EXPORT_SYMBOL(arch_local_save_flags);