Currently, CONFIG_JUMP_LABEL just means "I _want_ to use jump label". The jump label is controlled by HAVE_JUMP_LABEL, which is defined like this: #if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL) # define HAVE_JUMP_LABEL #endif We can improve this by testing 'asm goto' support in Kconfig, then make JUMP_LABEL depend on CC_HAS_ASM_GOTO. Ugly #ifdef HAVE_JUMP_LABEL will go away, and CONFIG_JUMP_LABEL will match to the real kernel capability. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
		
			
				
	
	
		
			23 lines
		
	
	
		
			511 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			511 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| # Test for gcc 'asm goto' support
 | |
| # Copyright (C) 2010, Jason Baron <jbaron@redhat.com>
 | |
| 
 | |
| cat << "END" | $@ -x c - -fno-PIE -c -o /dev/null
 | |
| int main(void)
 | |
| {
 | |
| #if defined(__arm__) || defined(__aarch64__)
 | |
| 	/*
 | |
| 	 * Not related to asm goto, but used by jump label
 | |
| 	 * and broken on some ARM GCC versions (see GCC Bug 48637).
 | |
| 	 */
 | |
| 	static struct { int dummy; int state; } tp;
 | |
| 	asm (".long %c0" :: "i" (&tp.state));
 | |
| #endif
 | |
| 
 | |
| entry:
 | |
| 	asm goto ("" :::: entry);
 | |
| 	return 0;
 | |
| }
 | |
| END
 |