/* SPDX-License-Identifier: GPL-2.0-only */
/*
*
* Copyright IBM Corp. 2008
*
* Authors: Hollis Blanchard <hollisb@us.ibm.com>
*/
#ifndef __ASM_PPC_DISASSEMBLE_H__
#define __ASM_PPC_DISASSEMBLE_H__
#include <linux/types.h>
static inline unsigned int get_op(u32 inst)
{
return inst >> 26 ;
}
static inline unsigned int get_xop(u32 inst)
{
return (inst >> 1 ) & 0 x3ff;
}
static inline unsigned int get_sprn(u32 inst)
{
return ((inst >> 16 ) & 0 x1f) | ((inst >> 6 ) & 0 x3e0);
}
static inline unsigned int get_dcrn(u32 inst)
{
return ((inst >> 16 ) & 0 x1f) | ((inst >> 6 ) & 0 x3e0);
}
static inline unsigned int get_tmrn(u32 inst)
{
return ((inst >> 16 ) & 0 x1f) | ((inst >> 6 ) & 0 x3e0);
}
static inline unsigned int get_rt(u32 inst)
{
return (inst >> 21 ) & 0 x1f;
}
static inline unsigned int get_rs(u32 inst)
{
return (inst >> 21 ) & 0 x1f;
}
static inline unsigned int get_ra(u32 inst)
{
return (inst >> 16 ) & 0 x1f;
}
static inline unsigned int get_rb(u32 inst)
{
return (inst >> 11 ) & 0 x1f;
}
static inline unsigned int get_rc(u32 inst)
{
return inst & 0 x1;
}
static inline unsigned int get_ws(u32 inst)
{
return (inst >> 11 ) & 0 x1f;
}
static inline unsigned int get_d(u32 inst)
{
return inst & 0 xffff;
}
static inline unsigned int get_oc(u32 inst)
{
return (inst >> 11 ) & 0 x7fff;
}
static inline unsigned int get_tx_or_sx(u32 inst)
{
return (inst) & 0 x1;
}
#define IS_XFORM(inst) (get_op(inst) == 31 )
#define IS_DSFORM(inst) (get_op(inst) >= 56 )
/*
* Create a DSISR value from the instruction
*/
static inline unsigned make_dsisr(unsigned instr)
{
unsigned dsisr;
/* bits 6:15 --> 22:31 */
dsisr = (instr & 0 x03ff0000) >> 16 ;
if (IS_XFORM(instr)) {
/* bits 29:30 --> 15:16 */
dsisr |= (instr & 0 x00000006) << 14 ;
/* bit 25 --> 17 */
dsisr |= (instr & 0 x00000040) << 8 ;
/* bits 21:24 --> 18:21 */
dsisr |= (instr & 0 x00000780) << 3 ;
} else {
/* bit 5 --> 17 */
dsisr |= (instr & 0 x04000000) >> 12 ;
/* bits 1: 4 --> 18:21 */
dsisr |= (instr & 0 x78000000) >> 17 ;
/* bits 30:31 --> 12:13 */
if (IS_DSFORM(instr))
dsisr |= (instr & 0 x00000003) << 18 ;
}
return dsisr;
}
#endif /* __ASM_PPC_DISASSEMBLE_H__ */
Messung V0.5 in Prozent C=89 H=94 G=91
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland