/* tc-ns32k.h -- Opcode table for National Semi 32k processor
- Copyright 1987, 1992, 1993, 1994, 1995, 1997, 2000, 2002, 2005
- Free Software Foundation, Inc.
+ Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS 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, or (at your option)
+ the Free Software Foundation; either version 3, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
#define TC_PCREL_ADJUST(F) md_pcrel_adjust(F)
extern int md_pcrel_adjust (fragS *);
-#ifdef BFD_ASSEMBLER
#define NO_RELOC BFD_RELOC_NONE
#define TARGET_ARCH bfd_arch_ns32k
#ifndef TARGET_FORMAT /* Maybe defined in te-*.h. */
#define TARGET_FORMAT "a.out-pc532-mach"
#endif
-#else
-#define NO_RELOC 0
-#endif
#define LOCAL_LABELS_FB 1
#include "bit_fix.h"
-#define tc_aout_pre_write_hook(x) {;} /* not used */
-#define tc_crawl_symbol_chain(a) {;} /* not used */
-#define tc_headers_hook(a) {;} /* not used */
-
#ifdef SEQUENT_COMPATABILITY
#define DEF_MODEC 20
#define DEF_MODEL 21
#define ARG_LEN 50
#define TC_CONS_FIX_NEW cons_fix_new_ns32k
-extern void cons_fix_new_ns32k (fragS *, int, int, expressionS *);
+extern void cons_fix_new_ns32k (fragS *, int, int, expressionS *,
+ bfd_reloc_code_real_type);
/* The NS32x32 has a non 0 nop instruction which should be used in aligns. */
#define NOP_OPCODE 0xa2
char fr_bsr; \
}
-#define TC_FRAG_INIT(X) \
+#define TC_FRAG_INIT(X, MAX_BYTES) \
do \
{ \
frag_opcode_frag (X) = NULL; \
struct \
{ \
fragS * opcode_fragP; \
+ bit_fixS * fx_bit_fixP; \
unsigned int opcode_offset; \
unsigned int bsr : 1; \
+ unsigned int fx_im_disp : 2; \
}
/* Accessor macros for things which may move around.
See comments in write.h. */
-#define fix_im_disp(X) (X)->fx_im_disp
-#define fix_bit_fixP(X) (X)->fx_bit_fixP
+#define fix_im_disp(X) (X)->tc_fix_data.fx_im_disp
+#define fix_bit_fixP(X) (X)->tc_fix_data.fx_bit_fixP
#define fix_opcode_frag(X) (X)->tc_fix_data.opcode_fragP
#define fix_opcode_offset(X) (X)->tc_fix_data.opcode_offset
#define fix_bsr(X) (X)->tc_fix_data.bsr
{ \
fix_opcode_frag(X) = NULL; \
fix_opcode_offset(X) = 0; \
+ fix_bit_fixP(X) = NULL; \
fix_bsr(X) = 0; \
+ fix_im_disp(X) = 0; \
} \
while (0)
#define TC_FIX_DATA_PRINT(FILE, FIX) \
do \
{ \
- fprintf ((FILE), "opcode_frag=%ld, operand offset=%d, bsr=%d\n", \
- (unsigned long) fix_opcode_frag (FIX), \
- fix_opcode_offset (FIX), \
- fix_bsr (FIX)); \
+ fprintf ((FILE), "opcode_frag=%ld, operand offset=%d, bsr=%d, " \
+ "im_disp=%d\n", \
+ (unsigned long) fix_opcode_frag (FIX), \
+ fix_opcode_offset (FIX), \
+ fix_bsr (FIX), \
+ fix_im_disp (FIX)); \
} \
while (0)