aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog12
-rw-r--r--gas/config/tc-hppa.c27
-rw-r--r--gas/config/tc-hppa.h11
3 files changed, 34 insertions, 16 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 67bc647..583e0ca 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,15 @@
+2003-10-06 Matt Thomas <matt@3am-software.com>
+
+ Switch NetBSD/hppa to use Linux PA-RISC ELF ABI and
+ assembler syntax.
+
+ tc-hppa.c: Add "%farg[0-3]", "%fret", "%t[1-4]", "%tf[1-4]"
+ register names. Change all "defined (TE_LINUX)" to
+ "(defined (TE_LINUX) || defined (TE_NETBSD))".
+
+ tc-hppa.h: Make NetBSD use "elfXX-hppa-linux" bfd target.
+ Remove NetBSD's use of LABELS_WITHOUT_COLONS.
+
2003-10-06 Robert Millan <robertmh@gnu.org>
* configure.in: Match GNU/KNetBSD with new knetbsd*-gnu triplet.
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 89b39e5..1f365b0 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -490,7 +490,7 @@ struct selector_entry
static void pa_check_current_space_and_subspace PARAMS ((void));
#endif
-#if !(defined (OBJ_ELF) && defined (TE_LINUX))
+#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD)))
static void pa_text PARAMS ((int));
static void pa_data PARAMS ((int));
static void pa_comm PARAMS ((int));
@@ -647,7 +647,7 @@ const pseudo_typeS md_pseudo_table[] =
{"byte", pa_cons, 1},
{"call", pa_call, 0},
{"callinfo", pa_callinfo, 0},
-#if defined (OBJ_ELF) && defined (TE_LINUX)
+#if defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))
{"code", obj_elf_text, 0},
#else
{"code", pa_text, 0},
@@ -657,14 +657,14 @@ const pseudo_typeS md_pseudo_table[] =
{"compiler", pa_compiler, 0},
#endif
{"copyright", pa_copyright, 0},
-#if !(defined (OBJ_ELF) && defined (TE_LINUX))
+#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD)))
{"data", pa_data, 0},
#endif
{"double", pa_float_cons, 'd'},
{"dword", pa_cons, 8},
{"end", pa_end, 0},
{"end_brtab", pa_brtab, 0},
-#if !(defined (OBJ_ELF) && defined (TE_LINUX))
+#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD)))
{"end_try", pa_try, 0},
#endif
{"enter", pa_enter, 0},
@@ -705,7 +705,7 @@ const pseudo_typeS md_pseudo_table[] =
#ifdef OBJ_SOM
{"subspa", pa_subspace, 0},
#endif
-#if !(defined (OBJ_ELF) && defined (TE_LINUX))
+#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD)))
{"text", pa_text, 0},
#endif
{"version", pa_version, 0},
@@ -852,6 +852,10 @@ static const struct pd_reg pre_defined_registers[] =
{"%dp", 27},
{"%eiem", 15},
{"%eirr", 23},
+ {"%farg0", 5},
+ {"%farg1", 6},
+ {"%farg2", 7},
+ {"%farg3", 8},
{"%fr0", 0 + FP_REG_BASE},
{"%fr0l", 0 + FP_REG_BASE},
{"%fr0r", 0 + FP_REG_BASE + FP_REG_RSEL},
@@ -948,6 +952,7 @@ static const struct pd_reg pre_defined_registers[] =
{"%fr9", 9 + FP_REG_BASE},
{"%fr9l", 9 + FP_REG_BASE},
{"%fr9r", 9 + FP_REG_BASE + FP_REG_RSEL},
+ {"%fret", 4},
{"%hta", 25},
{"%iir", 19},
{"%ior", 21},
@@ -1013,6 +1018,14 @@ static const struct pd_reg pre_defined_registers[] =
{"%sr5", 5},
{"%sr6", 6},
{"%sr7", 7},
+ {"%t1", 22},
+ {"%t2", 21},
+ {"%t3", 20},
+ {"%t4", 19},
+ {"%tf1", 11},
+ {"%tf2", 10},
+ {"%tf3", 9},
+ {"%tf4", 8},
{"%tr0", 24},
{"%tr1", 25},
{"%tr2", 26},
@@ -6304,7 +6317,7 @@ pa_callinfo (unused)
demand_empty_rest_of_line ();
}
-#if !(defined (OBJ_ELF) && defined (TE_LINUX))
+#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD)))
/* Switch to the text space. Like s_text, but delete our
label when finished. */
static void
@@ -6384,7 +6397,7 @@ pa_comm (unused)
}
demand_empty_rest_of_line ();
}
-#endif /* !(defined (OBJ_ELF) && defined (TE_LINUX)) */
+#endif /* !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))) */
/* Process a .END pseudo-op. */
diff --git a/gas/config/tc-hppa.h b/gas/config/tc-hppa.h
index 338b6e8..64d0644 100644
--- a/gas/config/tc-hppa.h
+++ b/gas/config/tc-hppa.h
@@ -48,14 +48,14 @@
#ifdef OBJ_ELF
#if TARGET_ARCH_SIZE == 64
#include "bfd/elf64-hppa.h"
-#ifdef TE_LINUX
+#if defined (TE_LINUX) || defined (TE_NetBSD)
#define TARGET_FORMAT "elf64-hppa-linux"
#else
#define TARGET_FORMAT "elf64-hppa"
#endif
#else /* TARGET_ARCH_SIZE == 32 */
#include "bfd/elf32-hppa.h"
-#ifdef TE_LINUX
+#if defined (TE_LINUX) || defined (TE_NetBSD)
#define TARGET_FORMAT "elf32-hppa-linux"
#else
#define TARGET_FORMAT "elf32-hppa"
@@ -77,13 +77,6 @@
#define WARN_COMMENTS 1
#endif
-#ifdef TE_NetBSD
-/* XXX the original OpenBSD code has labels without colons,
- so this is required, for now -- fredette@netbsd.org */
-/* Labels are not required to have a colon for a suffix. */
-#define LABELS_WITHOUT_COLONS 1
-#endif
-
/* FIXME. Why oh why aren't these defined somewhere globally? */
#ifndef FALSE
#define FALSE (0)