76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _MCSAFE_TEST_H_
 | |
| #define _MCSAFE_TEST_H_
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| #ifdef CONFIG_MCSAFE_TEST
 | |
| extern unsigned long mcsafe_test_src;
 | |
| extern unsigned long mcsafe_test_dst;
 | |
| 
 | |
| static inline void mcsafe_inject_src(void *addr)
 | |
| {
 | |
| 	if (addr)
 | |
| 		mcsafe_test_src = (unsigned long) addr;
 | |
| 	else
 | |
| 		mcsafe_test_src = ~0UL;
 | |
| }
 | |
| 
 | |
| static inline void mcsafe_inject_dst(void *addr)
 | |
| {
 | |
| 	if (addr)
 | |
| 		mcsafe_test_dst = (unsigned long) addr;
 | |
| 	else
 | |
| 		mcsafe_test_dst = ~0UL;
 | |
| }
 | |
| #else /* CONFIG_MCSAFE_TEST */
 | |
| static inline void mcsafe_inject_src(void *addr)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline void mcsafe_inject_dst(void *addr)
 | |
| {
 | |
| }
 | |
| #endif /* CONFIG_MCSAFE_TEST */
 | |
| 
 | |
| #else /* __ASSEMBLY__ */
 | |
| #include <asm/export.h>
 | |
| 
 | |
| #ifdef CONFIG_MCSAFE_TEST
 | |
| .macro MCSAFE_TEST_CTL
 | |
| 	.pushsection .data
 | |
| 	.align 8
 | |
| 	.globl mcsafe_test_src
 | |
| 	mcsafe_test_src:
 | |
| 		.quad 0
 | |
| 	EXPORT_SYMBOL_GPL(mcsafe_test_src)
 | |
| 	.globl mcsafe_test_dst
 | |
| 	mcsafe_test_dst:
 | |
| 		.quad 0
 | |
| 	EXPORT_SYMBOL_GPL(mcsafe_test_dst)
 | |
| 	.popsection
 | |
| .endm
 | |
| 
 | |
| .macro MCSAFE_TEST_SRC reg count target
 | |
| 	leaq \count(\reg), %r9
 | |
| 	cmp mcsafe_test_src, %r9
 | |
| 	ja \target
 | |
| .endm
 | |
| 
 | |
| .macro MCSAFE_TEST_DST reg count target
 | |
| 	leaq \count(\reg), %r9
 | |
| 	cmp mcsafe_test_dst, %r9
 | |
| 	ja \target
 | |
| .endm
 | |
| #else
 | |
| .macro MCSAFE_TEST_CTL
 | |
| .endm
 | |
| 
 | |
| .macro MCSAFE_TEST_SRC reg count target
 | |
| .endm
 | |
| 
 | |
| .macro MCSAFE_TEST_DST reg count target
 | |
| .endm
 | |
| #endif /* CONFIG_MCSAFE_TEST */
 | |
| #endif /* __ASSEMBLY__ */
 | |
| #endif /* _MCSAFE_TEST_H_ */
 |