Squashed backup commit (no shallow-clone history issues) of xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream commit 9eece662e) plus all fixes applied to get everpal_defconfig building clean against a modern (GCC 15.2.0) toolchain -- see the previous commit message on the lineage-23.2 branch (also in this repo history is not available here since this is a squashed snapshot; full incremental history lives in the local DL380 checkout and the upstream GitHub remote). Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
57 lines
1.6 KiB
C
57 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Disassemble s390 instructions.
|
|
*
|
|
* Copyright IBM Corp. 2007
|
|
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
|
*/
|
|
|
|
#ifndef __ASM_S390_DIS_H__
|
|
#define __ASM_S390_DIS_H__
|
|
|
|
/* Type of operand */
|
|
#define OPERAND_GPR 0x1 /* Operand printed as %rx */
|
|
#define OPERAND_FPR 0x2 /* Operand printed as %fx */
|
|
#define OPERAND_AR 0x4 /* Operand printed as %ax */
|
|
#define OPERAND_CR 0x8 /* Operand printed as %cx */
|
|
#define OPERAND_VR 0x10 /* Operand printed as %vx */
|
|
#define OPERAND_DISP 0x20 /* Operand printed as displacement */
|
|
#define OPERAND_BASE 0x40 /* Operand printed as base register */
|
|
#define OPERAND_INDEX 0x80 /* Operand printed as index register */
|
|
#define OPERAND_PCREL 0x100 /* Operand printed as pc-relative symbol */
|
|
#define OPERAND_SIGNED 0x200 /* Operand printed as signed value */
|
|
#define OPERAND_LENGTH 0x400 /* Operand printed as length (+1) */
|
|
|
|
|
|
struct s390_operand {
|
|
int bits; /* The number of bits in the operand. */
|
|
int shift; /* The number of bits to shift. */
|
|
int flags; /* One bit syntax flags. */
|
|
};
|
|
|
|
struct s390_insn {
|
|
const char name[5];
|
|
unsigned char opfrag;
|
|
unsigned char format;
|
|
};
|
|
|
|
|
|
static inline int insn_length(unsigned char code)
|
|
{
|
|
return ((((int) code + 64) >> 7) + 1) << 1;
|
|
}
|
|
|
|
struct pt_regs;
|
|
|
|
void show_code(struct pt_regs *regs);
|
|
void print_fn_code(unsigned char *code, unsigned long len);
|
|
int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len);
|
|
struct s390_insn *find_insn(unsigned char *code);
|
|
|
|
static inline int is_known_insn(unsigned char *code)
|
|
{
|
|
return !!find_insn(code);
|
|
}
|
|
|
|
#endif /* __ASM_S390_DIS_H__ */
|