/* ns32k.c -- Assemble on the National Semiconductor 32k series
Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2005
+ 2001, 2002, 2003, 2005, 2006
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
/*#define SHOW_NUM 1*//* Uncomment for debugging. */
-#include <stdio.h>
-
#include "as.h"
#include "opcode/ns32k.h"
return recursive_level;
}
\f
-#ifdef BFD_ASSEMBLER
/* This functionality should really be in the bfd library. */
static bfd_reloc_code_real_type
return BFD_RELOC_NONE;
}
-#endif
static void
fix_new_ns32k (fragS *frag, /* Which frag? */
{
fixS *fixP = fix_new (frag, where, size, add_symbol,
offset, pcrel,
-#ifdef BFD_ASSEMBLER
bit_fixP ? NO_RELOC : reloc (size, pcrel, im_disp)
-#else
- NO_RELOC
-#endif
);
fix_opcode_frag (fixP) = opcode_frag;
unsigned int opcode_offset)
{
fixS *fixP = fix_new_exp (frag, where, size, exp, pcrel,
-#ifdef BFD_ASSEMBLER
bit_fixP ? NO_RELOC : reloc (size, pcrel, im_disp)
-#else
- NO_RELOC
-#endif
);
fix_opcode_frag (fixP) = opcode_frag;
size = 4;
else
{
- as_bad (_("Displacement to large for :d"));
+ as_bad (_("Displacement too large for :d"));
size = 4;
}
}
\f
/* Convert a relaxed displacement to ditto in final output. */
-#ifndef BFD_ASSEMBLER
-void
-md_convert_frag (object_headers *headers,
- segT sec,
- fragS *fragP)
-#else
void
md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
fragS *fragP)
-#endif
{
long disp;
long ext = 0;
int md_short_jump_size = 3;
int md_long_jump_size = 5;
-const int md_reloc_size = 8; /* Size of relocation record. */
void
md_create_short_jump (char *ptr,
return res;
}
-#ifdef BFD_ASSEMBLER
-
arelent *
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
{
return rel;
}
-#else /* BFD_ASSEMBLER */
-
-#ifdef OBJ_AOUT
-void
-cons_fix_new_ns32k (char *where,
- struct fix *fixP,
- relax_addressT segment_address_in_file)
-{
- /* In: Length of relocation (or of address) in chars: 1, 2 or 4.
- Out: GNU LD relocation length code: 0, 1, or 2. */
-
- static unsigned char nbytes_r_length[] = { 42, 0, 1, 42, 2 };
- long r_symbolnum;
-
- know (fixP->fx_addsy != NULL);
-
- md_number_to_chars (where,
- fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file,
- 4);
-
- r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy)
- ? S_GET_TYPE (fixP->fx_addsy)
- : fixP->fx_addsy->sy_number);
-
- md_number_to_chars (where + 4,
- ((long) (r_symbolnum)
- | (long) (fixP->fx_pcrel << 24)
- | (long) (nbytes_r_length[fixP->fx_size] << 25)
- | (long) ((!S_IS_DEFINED (fixP->fx_addsy)) << 27)
- | (long) (fix_bsr (fixP) << 28)
- | (long) (fix_im_disp (fixP) << 29)),
- 4);
-}
-
-#endif /* OBJ_AOUT */
-#endif /* BFD_ASSEMBLER */