Contributors: 7
	  
        
          | Author | 
          Tokens | 
          Token Proportion | 
          Commits | 
          Commit Proportion | 
        
	  
	  
        
        
          | Michael Ellerman | 
          60 | 
          39.74% | 
          3 | 
          27.27% | 
        
        
          | Peter Zijlstra | 
          34 | 
          22.52% | 
          1 | 
          9.09% | 
        
        
          | Ingo Molnar | 
          32 | 
          21.19% | 
          2 | 
          18.18% | 
        
        
          | Anton Blanchard | 
          16 | 
          10.60% | 
          1 | 
          9.09% | 
        
        
          | Christophe Leroy | 
          5 | 
          3.31% | 
          2 | 
          18.18% | 
        
        
          | Jason Baron | 
          2 | 
          1.32% | 
          1 | 
          9.09% | 
        
        
          | Thomas Gleixner | 
          2 | 
          1.32% | 
          1 | 
          9.09% | 
        
	  
	  
        
          | Total | 
          151 | 
           | 
          11 | 
           | 
	    
	  
    
 
/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _ASM_POWERPC_JUMP_LABEL_H
#define _ASM_POWERPC_JUMP_LABEL_H
/*
 * Copyright 2010 Michael Ellerman, IBM Corp.
 */
#ifndef __ASSEMBLY__
#include <linux/types.h>
#include <asm/feature-fixups.h>
#include <asm/asm-const.h>
#define JUMP_ENTRY_TYPE		stringify_in_c(FTR_ENTRY_LONG)
#define JUMP_LABEL_NOP_SIZE	4
static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
{
	asm_volatile_goto("1:\n\t"
		 "nop # arch_static_branch\n\t"
		 ".pushsection __jump_table,  \"aw\"\n\t"
		 ".long 1b - ., %l[l_yes] - .\n\t"
		 JUMP_ENTRY_TYPE "%c0 - .\n\t"
		 ".popsection \n\t"
		 : :  "i" (&((char *)key)[branch]) : : l_yes);
	return false;
l_yes:
	return true;
}
static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch)
{
	asm_volatile_goto("1:\n\t"
		 "b %l[l_yes] # arch_static_branch_jump\n\t"
		 ".pushsection __jump_table,  \"aw\"\n\t"
		 ".long 1b - ., %l[l_yes] - .\n\t"
		 JUMP_ENTRY_TYPE "%c0 - .\n\t"
		 ".popsection \n\t"
		 : :  "i" (&((char *)key)[branch]) : : l_yes);
	return false;
l_yes:
	return true;
}
#else
#define ARCH_STATIC_BRANCH(LABEL, KEY)		\
1098:	nop;					\
	.pushsection __jump_table, "aw";	\
	.long 1098b - ., LABEL - .;		\
	FTR_ENTRY_LONG KEY - .;			\
	.popsection
#endif
#endif /* _ASM_POWERPC_JUMP_LABEL_H */