mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-10 17:36:21 +00:00
94 lines
2.8 KiB
C
94 lines
2.8 KiB
C
/* -*- mode: C; c-basic-offset: 3; -*- */
|
|
|
|
/*---------------------------------------------------------------*/
|
|
/*--- begin s390_disasm.h ---*/
|
|
/*---------------------------------------------------------------*/
|
|
|
|
/*
|
|
This file is part of Valgrind, a dynamic binary instrumentation
|
|
framework.
|
|
|
|
Copyright IBM Corp. 2010-2015
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA.
|
|
|
|
The GNU General Public License is contained in the file COPYING.
|
|
*/
|
|
|
|
#ifndef __VEX_S390_DISASM_H
|
|
#define __VEX_S390_DISASM_H
|
|
|
|
#include "libvex_basictypes.h"
|
|
|
|
/* Macros to encode a command for s390_disasm. */
|
|
#undef P
|
|
#define P(a) (S390_ARG_##a)
|
|
#undef ENC1
|
|
#define ENC1(a) ((P(DONE) << 4) | P(a))
|
|
#undef ENC2
|
|
#define ENC2(a,b) ((P(DONE) << 8) | (P(b) << 4) | P(a))
|
|
#undef ENC3
|
|
#define ENC3(a,b,c) ((P(DONE) << 12) | (P(c) << 8) | (P(b) << 4) | P(a))
|
|
#undef ENC4
|
|
#define ENC4(a,b,c,d) ((P(DONE) << 16) | (P(d) << 12) | (P(c) << 8) | \
|
|
(P(b) << 4) | P(a))
|
|
#undef ENC5
|
|
#define ENC5(a,b,c,d,e) ((P(DONE) << 20) | (P(e) << 16) | (P(d) << 12) | \
|
|
(P(c) << 8) | (P(b) << 4) | P(a))
|
|
#undef ENC6
|
|
#define ENC6(a,b,c,d,e,f) ((P(DONE) << 24) | (P(f) << 20) | (P(e) << 16) | \
|
|
(P(d) << 12) | (P(c) << 8) | (P(b) << 4) | P(a))
|
|
|
|
/* The different kinds of operands in an asm insn */
|
|
enum {
|
|
S390_ARG_DONE = 0,
|
|
S390_ARG_GPR = 1,
|
|
S390_ARG_FPR = 2,
|
|
S390_ARG_AR = 3,
|
|
S390_ARG_INT = 4,
|
|
S390_ARG_UINT = 5,
|
|
S390_ARG_PCREL = 6,
|
|
S390_ARG_SDXB = 7,
|
|
S390_ARG_UDXB = 8,
|
|
S390_ARG_UDLB = 9,
|
|
S390_ARG_CABM = 10,
|
|
S390_ARG_MNM = 11,
|
|
S390_ARG_XMNM = 12
|
|
};
|
|
|
|
/* The different kinds of extended mnemonics */
|
|
enum {
|
|
S390_XMNM_CAB = 0,
|
|
S390_XMNM_BCR = 1,
|
|
S390_XMNM_BC = 2,
|
|
S390_XMNM_BRC = 3,
|
|
S390_XMNM_BRCL = 4,
|
|
S390_XMNM_LOCR = 5,
|
|
S390_XMNM_LOCGR = 6,
|
|
S390_XMNM_LOC = 7,
|
|
S390_XMNM_LOCG = 8,
|
|
S390_XMNM_STOC = 9,
|
|
S390_XMNM_STOCG = 10
|
|
};
|
|
|
|
void s390_disasm(UInt command, ...);
|
|
|
|
/*---------------------------------------------------------------*/
|
|
/*--- end s390_disasm.h ---*/
|
|
/*---------------------------------------------------------------*/
|
|
|
|
#endif /* __VEX_S390_DISASM_H */
|