/* Nios II opcode list for GAS, the GNU assembler.
   Copyright (C) 2012, 2013 Free Software Foundation, Inc.
   Contributed by Nigel Gray (ngray@altera.com).
   Contributed by Mentor Graphics, Inc.

   This file is part of GAS, the GNU Assembler, and GDB, the GNU disassembler.

   GAS/GDB 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 3, or (at your option)
   any later version.

   GAS/GDB 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 GAS or GDB; see the file COPYING3.  If not, write to
   the Free Software Foundation, 51 Franklin Street - Fifth Floor,
   Boston, MA 02110-1301, USA.  */

#ifndef _NIOS2_H_
#define _NIOS2_H_

#include "bfd.h"

/****************************************************************************
 * This file contains structures, bit masks and shift counts used
 * by the GNU toolchain to define the Nios II instruction set and
 * access various opcode fields.
 ****************************************************************************/

/* Identify different overflow situations for error messages.  */
enum overflow_type
{
  call_target_overflow = 0,
  branch_target_overflow,
  address_offset_overflow,
  signed_immed16_overflow,
  unsigned_immed16_overflow,
  unsigned_immed5_overflow,
  custom_opcode_overflow,
  no_overflow
};

/* This structure holds information for a particular instruction. 

   The args field is a string describing the operands.  The following
   letters can appear in the args:
     c - a 5-bit control register index
     d - a 5-bit destination register index
     s - a 5-bit left source register index
     t - a 5-bit right source register index
     i - a 16-bit signed immediate
     u - a 16-bit unsigned immediate
     o - a 16-bit signed program counter relative offset
     j - a 5-bit unsigned immediate
     b - a 5-bit break instruction constant
     l - a 8-bit custom instruction constant
     m - a 26-bit unsigned immediate
   Literal ',', '(', and ')' characters may also appear in the args as
   delimiters.

   The pinfo field is INSN_MACRO for a macro.  Otherwise, it is a collection
   of bits describing the instruction, notably any relevant hazard
   information.

   When assembling, the match field contains the opcode template, which
   is modified by the arguments to produce the actual opcode
   that is emitted.  If pinfo is INSN_MACRO, then this is 0.

   If pinfo is INSN_MACRO, the mask field stores the macro identifier.
   Otherwise this is a bit mask for the relevant portions of the opcode
   when disassembling.  If the actual opcode anded with the match field
   equals the opcode field, then we have found the correct instruction.  */

struct nios2_opcode
{
  const char *name;		/* The name of the instruction.  */
  const char *args;		/* A string describing the arguments for this 
				   instruction.  */
  const char *args_test;	/* Like args, but with an extra argument for 
				   the expected opcode.  */
  unsigned long num_args;	/* The number of arguments the instruction 
				   takes.  */
  unsigned long match;		/* The basic opcode for the instruction.  */
  unsigned long mask;		/* Mask for the opcode field of the 
				   instruction.  */
  unsigned long pinfo;		/* Is this a real instruction or instruction 
				   macro?  */
  enum overflow_type overflow_msg;  /* Used to generate informative 
				       message when fixup overflows.  */
};

/* This value is used in the nios2_opcode.pinfo field to indicate that the 
   instruction is a macro or pseudo-op.  This requires special treatment by 
   the assembler, and is used by the disassembler to determine whether to 
   check for a nop.  */
#define NIOS2_INSN_MACRO	0x80000000
#define NIOS2_INSN_MACRO_MOV	0x80000001
#define NIOS2_INSN_MACRO_MOVI	0x80000002
#define NIOS2_INSN_MACRO_MOVIA	0x80000004

#define NIOS2_INSN_RELAXABLE	0x40000000
#define NIOS2_INSN_UBRANCH	0x00000010
#define NIOS2_INSN_CBRANCH	0x00000020
#define NIOS2_INSN_CALL		0x00000040

#define NIOS2_INSN_ADDI		0x00000080
#define NIOS2_INSN_ANDI		0x00000100
#define NIOS2_INSN_ORI		0x00000200
#define NIOS2_INSN_XORI		0x00000400


/* Associates a register name ($6) with a 5-bit index (eg 6).  */
struct nios2_reg
{
  const char *name;
  const int index;
};


/* These are bit masks and shift counts for accessing the various
   fields of a Nios II instruction.  */

/* Macros for getting and setting an instruction field.  */
#define GET_INSN_FIELD(X, i) \
  (((i) & OP_MASK_##X) >> OP_SH_##X)
#define SET_INSN_FIELD(X, i, j) \
  ((i) = (((i) & ~OP_MASK_##X) | (((j) << OP_SH_##X) & OP_MASK_##X)))

/* Instruction field definitions.  */
#define IW_A_LSB 27
#define IW_A_MSB 31
#define IW_A_SZ 5
#define IW_A_MASK 0x1f

#define IW_B_LSB 22
#define IW_B_MSB 26
#define IW_B_SZ 5
#define IW_B_MASK 0x1f

#define IW_C_LSB 17
#define IW_C_MSB 21
#define IW_C_SZ 5
#define IW_C_MASK 0x1f

#define IW_IMM16_LSB 6
#define IW_IMM16_MSB 21
#define IW_IMM16_SZ 16
#define IW_IMM16_MASK 0xffff

#define IW_IMM26_LSB 6
#define IW_IMM26_MSB 31
#define IW_IMM26_SZ 26
#define IW_IMM26_MASK 0x3ffffff

#define IW_OP_LSB 0
#define IW_OP_MSB 5
#define IW_OP_SZ 6
#define IW_OP_MASK 0x3f

#define IW_OPX_LSB 11
#define IW_OPX_MSB 16
#define IW_OPX_SZ 6
#define IW_OPX_MASK 0x3f

#define IW_SHIFT_IMM5_LSB 6
#define IW_SHIFT_IMM5_MSB 10
#define IW_SHIFT_IMM5_SZ 5
#define IW_SHIFT_IMM5_MASK 0x1f

#define IW_CONTROL_REGNUM_LSB 6
#define IW_CONTROL_REGNUM_MSB 9
#define IW_CONTROL_REGNUM_SZ 4
#define IW_CONTROL_REGNUM_MASK 0xf

/* Operator mask and shift.  */
#define OP_MASK_OP		(IW_OP_MASK << IW_OP_LSB)
#define OP_SH_OP		IW_OP_LSB

/* Masks and shifts for I-type instructions.  */
#define OP_MASK_IOP		(IW_OP_MASK << IW_OP_LSB)
#define OP_SH_IOP		IW_OP_LSB

#define OP_MASK_IMM16		(IW_IMM16_MASK << IW_IMM16_LSB)
#define OP_SH_IMM16		IW_IMM16_LSB

#define OP_MASK_IRD		(IW_B_MASK << IW_B_LSB)
#define OP_SH_IRD		IW_B_LSB /* The same as T for I-type.  */

#define OP_MASK_IRT		(IW_B_MASK << IW_B_LSB)
#define OP_SH_IRT		IW_B_LSB

#define OP_MASK_IRS		(IW_A_MASK << IW_A_LSB)
#define OP_SH_IRS		IW_A_LSB

/* Masks and shifts for R-type instructions.  */
#define OP_MASK_ROP		(IW_OP_MASK << IW_OP_LSB)
#define OP_SH_ROP		IW_OP_LSB

#define OP_MASK_ROPX		(IW_OPX_MASK << IW_OPX_LSB)
#define OP_SH_ROPX		IW_OPX_LSB

#define OP_MASK_RRD		(IW_C_MASK << IW_C_LSB)
#define OP_SH_RRD		IW_C_LSB

#define OP_MASK_RRT		(IW_B_MASK << IW_B_LSB)
#define OP_SH_RRT		IW_B_LSB

#define OP_MASK_RRS		(IW_A_MASK << IW_A_LSB)
#define OP_SH_RRS		IW_A_LSB

/* Masks and shifts for J-type instructions.  */
#define OP_MASK_JOP		(IW_OP_MASK << IW_OP_LSB)
#define OP_SH_JOP		IW_OP_LSB

#define OP_MASK_IMM26		(IW_IMM26_MASK << IW_IMM26_LSB)
#define OP_SH_IMM26		IW_IMM26_LSB

/* Masks and shifts for CTL instructions.  */
#define OP_MASK_RCTL	0x000007c0
#define OP_SH_RCTL	6

/* Break instruction imm5 field.  */
#define OP_MASK_TRAP_IMM5 0x000007c0
#define OP_SH_TRAP_IMM5	  6

/* Instruction imm5 field.  */
#define OP_MASK_IMM5		(IW_SHIFT_IMM5_MASK << IW_SHIFT_IMM5_LSB)
#define OP_SH_IMM5		IW_SHIFT_IMM5_LSB

/* Cache operation fields (type j,i(s)).  */
#define OP_MASK_CACHE_OPX	(IW_B_MASK << IW_B_LSB)
#define OP_SH_CACHE_OPX		IW_B_LSB
#define OP_MASK_CACHE_RRS	(IW_A_MASK << IW_A_LSB)
#define OP_SH_CACHE_RRS		IW_A_LSB

/* Custom instruction masks.  */
#define OP_MASK_CUSTOM_A	0x00010000
#define OP_SH_CUSTOM_A		16

#define OP_MASK_CUSTOM_B	0x00008000
#define OP_SH_CUSTOM_B		15

#define OP_MASK_CUSTOM_C	0x00004000
#define OP_SH_CUSTOM_C		14

#define OP_MASK_CUSTOM_N	0x00003fc0
#define OP_SH_CUSTOM_N		6
#define OP_MAX_CUSTOM_N		255

/* OP instruction values. */
#define OP_ADDI 4
#define OP_ANDHI 44
#define OP_ANDI 12
#define OP_BEQ 38
#define OP_BGE 14
#define OP_BGEU 46
#define OP_BLT 22
#define OP_BLTU 54
#define OP_BNE 30
#define OP_BR 6
#define OP_CALL 0
#define OP_CMPEQI 32
#define OP_CMPGEI 8
#define OP_CMPGEUI 40
#define OP_CMPLTI 16
#define OP_CMPLTUI 48
#define OP_CMPNEI 24
#define OP_CUSTOM 50
#define OP_FLUSHD 59
#define OP_FLUSHDA 27
#define OP_INITD 51
#define OP_INITDA 19
#define OP_JMPI 1
#define OP_LDB 7
#define OP_LDBIO 39
#define OP_LDBU 3
#define OP_LDBUIO 35
#define OP_LDH 15
#define OP_LDHIO 47
#define OP_LDHU 11
#define OP_LDHUIO 43
#define OP_LDL 31
#define OP_LDW 23
#define OP_LDWIO 55
#define OP_MULI 36
#define OP_OPX 58
#define OP_ORHI 52
#define OP_ORI 20
#define OP_RDPRS 56
#define OP_STB 5
#define OP_STBIO 37
#define OP_STC 29
#define OP_STH 13
#define OP_STHIO 45
#define OP_STW 21
#define OP_STWIO 53
#define OP_XORHI 60
#define OP_XORI 28

/* OPX instruction values.  */
#define OPX_ADD 49
#define OPX_AND 14
#define OPX_BREAK 52
#define OPX_BRET 9
#define OPX_CALLR 29
#define OPX_CMPEQ 32
#define OPX_CMPGE 8
#define OPX_CMPGEU 40
#define OPX_CMPLT 16
#define OPX_CMPLTU 48
#define OPX_CMPNE 24
#define OPX_CRST 62
#define OPX_DIV 37
#define OPX_DIVU 36
#define OPX_ERET 1
#define OPX_FLUSHI 12
#define OPX_FLUSHP 4
#define OPX_HBREAK 53
#define OPX_INITI 41
#define OPX_INTR 61
#define OPX_JMP 13
#define OPX_MUL 39
#define OPX_MULXSS 31
#define OPX_MULXSU 23
#define OPX_MULXUU 7
#define OPX_NEXTPC 28
#define OPX_NOR 6
#define OPX_OR 22
#define OPX_RDCTL 38
#define OPX_RET 5
#define OPX_ROL 3
#define OPX_ROLI 2
#define OPX_ROR 11
#define OPX_SLL 19
#define OPX_SLLI 18
#define OPX_SRA 59
#define OPX_SRAI 58
#define OPX_SRL 27
#define OPX_SRLI 26
#define OPX_SUB 57
#define OPX_SYNC 54
#define OPX_TRAP 45
#define OPX_WRCTL 46
#define OPX_WRPRS 20
#define OPX_XOR 30

/* The following macros define the opcode matches for each
   instruction code & OP_MASK_INST == OP_MATCH_INST.  */

/* OP instruction matches.  */
#define OP_MATCH_ADDI		OP_ADDI
#define OP_MATCH_ANDHI		OP_ANDHI
#define OP_MATCH_ANDI		OP_ANDI
#define OP_MATCH_BEQ		OP_BEQ
#define OP_MATCH_BGE		OP_BGE
#define OP_MATCH_BGEU		OP_BGEU
#define OP_MATCH_BLT		OP_BLT
#define OP_MATCH_BLTU		OP_BLTU
#define OP_MATCH_BNE		OP_BNE
#define OP_MATCH_BR		OP_BR
#define OP_MATCH_FLUSHD		OP_FLUSHD
#define OP_MATCH_FLUSHDA	OP_FLUSHDA
#define OP_MATCH_INITD		OP_INITD
#define OP_MATCH_INITDA		OP_INITDA
#define OP_MATCH_CALL		OP_CALL
#define OP_MATCH_CMPEQI		OP_CMPEQI
#define OP_MATCH_CMPGEI		OP_CMPGEI
#define OP_MATCH_CMPGEUI	OP_CMPGEUI
#define OP_MATCH_CMPLTI		OP_CMPLTI
#define OP_MATCH_CMPLTUI	OP_CMPLTUI
#define OP_MATCH_CMPNEI		OP_CMPNEI
#define OP_MATCH_JMPI		OP_JMPI
#define OP_MATCH_LDB		OP_LDB
#define OP_MATCH_LDBIO		OP_LDBIO
#define OP_MATCH_LDBU		OP_LDBU
#define OP_MATCH_LDBUIO		OP_LDBUIO
#define OP_MATCH_LDH		OP_LDH
#define OP_MATCH_LDHIO		OP_LDHIO
#define OP_MATCH_LDHU		OP_LDHU
#define OP_MATCH_LDHUIO		OP_LDHUIO
#define OP_MATCH_LDL		OP_LDL
#define OP_MATCH_LDW		OP_LDW
#define OP_MATCH_LDWIO		OP_LDWIO
#define OP_MATCH_MULI		OP_MULI
#define OP_MATCH_OPX		OP_OPX
#define OP_MATCH_ORHI		OP_ORHI
#define OP_MATCH_ORI		OP_ORI
#define OP_MATCH_RDPRS		OP_RDPRS
#define OP_MATCH_STB		OP_STB
#define OP_MATCH_STBIO		OP_STBIO
#define OP_MATCH_STC		OP_STC
#define OP_MATCH_STH		OP_STH
#define OP_MATCH_STHIO		OP_STHIO
#define OP_MATCH_STW		OP_STW
#define OP_MATCH_STWIO		OP_STWIO
#define OP_MATCH_CUSTOM		OP_CUSTOM
#define OP_MATCH_XORHI		OP_XORHI
#define OP_MATCH_XORI		OP_XORI
#define OP_MATCH_OPX		OP_OPX

/* OPX instruction values.  */
#define OPX_MATCH(code) ((code << IW_OPX_LSB) | OP_OPX)

#define OP_MATCH_ADD		OPX_MATCH (OPX_ADD)
#define OP_MATCH_AND		OPX_MATCH (OPX_AND)
#define OP_MATCH_BREAK		((0x1e << 17) | OPX_MATCH (OPX_BREAK))
#define OP_MATCH_BRET		(0xf0000000 | OPX_MATCH (OPX_BRET))
#define OP_MATCH_CALLR		((0x1f << 17) | OPX_MATCH (OPX_CALLR))
#define OP_MATCH_CMPEQ		OPX_MATCH (OPX_CMPEQ)
#define OP_MATCH_CMPGE		OPX_MATCH (OPX_CMPGE)
#define OP_MATCH_CMPGEU		OPX_MATCH (OPX_CMPGEU)
#define OP_MATCH_CMPLT		OPX_MATCH (OPX_CMPLT)
#define OP_MATCH_CMPLTU		OPX_MATCH (OPX_CMPLTU)
#define OP_MATCH_CMPNE		OPX_MATCH (OPX_CMPNE)
#define OP_MATCH_DIV		OPX_MATCH (OPX_DIV)
#define OP_MATCH_DIVU		OPX_MATCH (OPX_DIVU)
#define OP_MATCH_JMP		OPX_MATCH (OPX_JMP)
#define OP_MATCH_MUL		OPX_MATCH (OPX_MUL)
#define OP_MATCH_MULXSS		OPX_MATCH (OPX_MULXSS)
#define OP_MATCH_MULXSU		OPX_MATCH (OPX_MULXSU)
#define OP_MATCH_MULXUU		OPX_MATCH (OPX_MULXUU)
#define OP_MATCH_NEXTPC		OPX_MATCH (OPX_NEXTPC)
#define OP_MATCH_NOR		OPX_MATCH (OPX_NOR)
#define OP_MATCH_OR		OPX_MATCH (OPX_OR)
#define OP_MATCH_RDCTL		OPX_MATCH (OPX_RDCTL)
#define OP_MATCH_RET		(0xf8000000 | OPX_MATCH (OPX_RET))
#define OP_MATCH_ROL		OPX_MATCH (OPX_ROL)
#define OP_MATCH_ROLI		OPX_MATCH (OPX_ROLI)
#define OP_MATCH_ROR		OPX_MATCH (OPX_ROR)
#define OP_MATCH_SLL		OPX_MATCH (OPX_SLL)
#define OP_MATCH_SLLI		OPX_MATCH (OPX_SLLI)
#define OP_MATCH_SRA		OPX_MATCH (OPX_SRA)
#define OP_MATCH_SRAI		OPX_MATCH (OPX_SRAI)
#define OP_MATCH_SRL		OPX_MATCH (OPX_SRL)
#define OP_MATCH_SRLI		OPX_MATCH (OPX_SRLI)
#define OP_MATCH_SUB		OPX_MATCH (OPX_SUB)
#define OP_MATCH_SYNC		OPX_MATCH (OPX_SYNC)
#define OP_MATCH_TRAP		((0x1d << 17) | OPX_MATCH (OPX_TRAP))
#define OP_MATCH_ERET		(0xef800000 | OPX_MATCH (OPX_ERET))
#define OP_MATCH_WRCTL		OPX_MATCH (OPX_WRCTL)
#define OP_MATCH_WRPRS		OPX_MATCH (OPX_WRPRS)
#define OP_MATCH_XOR		OPX_MATCH (OPX_XOR)
#define OP_MATCH_FLUSHI		OPX_MATCH (OPX_FLUSHI)
#define OP_MATCH_FLUSHP		OPX_MATCH (OPX_FLUSHP)
#define OP_MATCH_INITI		OPX_MATCH (OPX_INITI)

/* Some unusual op masks.  */
#define OP_MASK_BREAK		((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_RRD \
				  | OP_MASK_ROPX | OP_MASK_OP) \
				 & 0xfffff03f)
#define OP_MASK_CALLR		((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX \
				  | OP_MASK_OP))
#define OP_MASK_JMP		((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX \
				  | OP_MASK_OP))
#define OP_MASK_SYNC		((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX \
				  | OP_MASK_OP))
#define OP_MASK_TRAP		((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_RRD \
				  | OP_MASK_ROPX | OP_MASK_OP) \
				 & 0xfffff83f)
#define OP_MASK_WRCTL		((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX \
				  | OP_MASK_OP))	/*& 0xfffff83f */
#define OP_MASK_NEXTPC		((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_ROPX \
				  | OP_MASK_OP))
#define OP_MASK_FLUSHI		((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX \
				  | OP_MASK_OP))
#define OP_MASK_INITI		((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX \
				  | OP_MASK_OP))

#define OP_MASK_ROLI		((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
#define OP_MASK_SLLI		((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
#define OP_MASK_SRAI		((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
#define OP_MASK_SRLI		((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
#define OP_MASK_RDCTL		((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_ROPX \
				  | OP_MASK_OP))	/*& 0xfffff83f */

#ifndef OP_MASK
#define OP_MASK				0xffffffff
#endif

/* These convenience macros to extract instruction fields are used by GDB.  */
#define GET_IW_A(Iw) \
    (((Iw) >> IW_A_LSB) & IW_A_MASK)
#define GET_IW_B(Iw) \
    (((Iw) >> IW_B_LSB) & IW_B_MASK)
#define GET_IW_C(Iw) \
    (((Iw) >> IW_C_LSB) & IW_C_MASK)
#define GET_IW_CONTROL_REGNUM(Iw) \
    (((Iw) >> IW_CONTROL_REGNUM_LSB) & IW_CONTROL_REGNUM_MASK)
#define GET_IW_IMM16(Iw) \
    (((Iw) >> IW_IMM16_LSB) & IW_IMM16_MASK)
#define GET_IW_IMM26(Iw) \
    (((Iw) >> IW_IMM26_LSB) & IW_IMM26_MASK)
#define GET_IW_OP(Iw) \
    (((Iw) >> IW_OP_LSB) & IW_OP_MASK)
#define GET_IW_OPX(Iw) \
    (((Iw) >> IW_OPX_LSB) & IW_OPX_MASK)

/* These are the data structures we use to hold the instruction information.  */
extern const struct nios2_opcode nios2_builtin_opcodes[];
extern const int bfd_nios2_num_builtin_opcodes;
extern struct nios2_opcode *nios2_opcodes;
extern int bfd_nios2_num_opcodes;

/* These are the data structures used to hold the register information.  */
extern const struct nios2_reg nios2_builtin_regs[];
extern struct nios2_reg *nios2_regs;
extern const int nios2_num_builtin_regs;
extern int nios2_num_regs;

/* Machine-independent macro for number of opcodes.  */
#define NUMOPCODES bfd_nios2_num_opcodes
#define NUMREGISTERS nios2_num_regs;

/* This is made extern so that the assembler can use it to find out
   what instruction caused an error.  */
extern const struct nios2_opcode *nios2_find_opcode_hash (unsigned long);

#endif /* _NIOS2_H */
