windows-nt/Source/XPSP1/NT/public/sdk/inc/ia64inst.h
2020-09-26 16:20:57 +08:00

82 lines
2.1 KiB
C

//
// No Check-in Source Code.
//
// Do not make this code available to non-Microsoft personnel
// without Intel's express permission
//
/**
*** Copyright (C) 1996-99 Intel Corporation. All rights reserved.
***
*** The information and source code contained herein is the exclusive
*** property of Intel Corporation and may not be disclosed, examined
*** or reproduced in whole or in part without explicit written authorization
*** from the company.
**/
/*++
Copyright (c) 1995 Intel Corporation
Module Name:
ia64inst.h
Abstract:
IA64 instruction and floating constant definitions.
Author:
hc
Revision History:
--*/
#ifndef _IA64INST_
#define _IA64INST_
#if _MSC_VER > 1000
#pragma once
#endif
//
// IA64 INSTRUCTION FORMAT STRUCTURES
//
typedef union _IA64_INSTRUCTION {
ULONG Long[4];
UCHAR Byte[16];
} IA64_INSTRUCTION, *PIA64_INSTRUCTION;
#define BUNDLE_SIZE sizeof(IA64_INSTRUCTION)
//
// Define certain specific instructions
//
#define SYSTEM_CALL_INSTR 0x01100000000L // break <number>
#define FAST_SYSCALL_INSTR 0x01180000000L // break <number>
#define RETURN_INSTR 0x00000A00000L // rfi
#define BREAK_INSTR 0x00000000000L // break <number>
#define NO_OP_INSTR 0x00000100000L // ori r.0, r.0, 0
#define INVALID_INSTR 0x00000000000L // all 0's => invalid
#define BR_RET_INSTR 0x00001040100L // br.ret
#define BR_RET_MASK 0x1e1f80001c0L // br.ret mask
#define INST_TEMPL_MASK (0x0000000001fL) // bit(4:0)
#define INST_SLOT0_MASK (0x1ffffffffffL << 5) // bit(5:45)
#define INST_SLOT1_MASK (0x1ffffffffffL << 14) // bit(46:86)
#define INST_SLOT2_MASK (0x1ffffffffffL << 23) // bit(87:127)
#define ISR_EI 41 // copy from kxia64.h
#define PSR_RI 41 // copy from kxia64.h
#define PSR_DD 39 // copy from kxia64.h
#define PSR_DB 24 // copy from kxia64.h
#define ISR_EI_MASK ((ULONGLONG)0x3 << ISR_EI) // ISR.ei (42:41)
#define IPSR_RI_MASK ((ULONGLONG)0x3 << PSR_RI) // PSR.ri (42:41)
#endif // _IA64INST_