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-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * Copyright (C) 2015 Josh Poimboeuf <jpoimboe@redhat.com>
^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) #ifndef _ARCH_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #define _ARCH_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <stdbool.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/list.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "objtool.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "cfi.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #ifdef INSN_USE_ORC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <asm/orc_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) enum insn_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	INSN_JUMP_CONDITIONAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	INSN_JUMP_UNCONDITIONAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	INSN_JUMP_DYNAMIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	INSN_JUMP_DYNAMIC_CONDITIONAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	INSN_CALL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	INSN_CALL_DYNAMIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	INSN_RETURN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	INSN_CONTEXT_SWITCH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	INSN_BUG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	INSN_NOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	INSN_STAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	INSN_CLAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	INSN_STD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	INSN_CLD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	INSN_OTHER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) enum op_dest_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	OP_DEST_REG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	OP_DEST_REG_INDIRECT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	OP_DEST_MEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	OP_DEST_PUSH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	OP_DEST_PUSHF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	OP_DEST_LEAVE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) struct op_dest {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	enum op_dest_type type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	unsigned char reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	int offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) enum op_src_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	OP_SRC_REG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	OP_SRC_REG_INDIRECT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	OP_SRC_CONST,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	OP_SRC_POP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	OP_SRC_POPF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	OP_SRC_ADD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	OP_SRC_AND,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) struct op_src {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 	enum op_src_type type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	unsigned char reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	int offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) struct stack_op {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 	struct op_dest dest;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 	struct op_src src;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 	struct list_head list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) struct instruction;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) void arch_initial_func_cfi_state(struct cfi_init_state *state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) int arch_decode_instruction(const struct elf *elf, const struct section *sec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 			    unsigned long offset, unsigned int maxlen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 			    unsigned int *len, enum insn_type *type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 			    unsigned long *immediate,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 			    struct list_head *ops_list);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) bool arch_callee_saved_reg(unsigned char reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) unsigned long arch_jump_destination(struct instruction *insn);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) unsigned long arch_dest_reloc_offset(int addend);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) const char *arch_nop_insn(int len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) int arch_decode_hint_reg(struct instruction *insn, u8 sp_reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #endif /* _ARCH_H */