summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-07-26 22:11:02 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-07-26 22:11:02 +0000
commit54f440d311c48e0aae2635ba8610d5b0b8eca157 (patch)
treec6f34f93a051d2e0c7179ac2bc999a4beffff39a /c/src/lib
parentPatch fixing typo from Eric Valette <valette@crf.canon.fr> on bug report (diff)
downloadrtems-54f440d311c48e0aae2635ba8610d5b0b8eca157.tar.bz2
Patch from Charles-Antoine Gauthier <charles.gauthier@iit.nrc.ca>.
to address m68k-rtemself for the MVME167. Here is the rtems patch I promissed you a long time ago to enable ELF with m68k. The target name I selected is m68k-rtemself. It preserves the m68k-rtems COFF target, and is parterned after the other ELF/COFF dual targets. The mvme167.cfg file causes the -qelf flag to be used during compilation if the name of the compiler contains rtemself. This flag is used in the bsp_specs file to select the elflinkcmds file rather than the linkcmds file. The former is for ELF, the latter for COFF. Some patches are required to the mc68040 FPSP code. Some of the assembler files contain instructions that were rejected by the m68k-rtemself-as assembler. This is a minor bug in the m68k ELF assembler, I think.
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libbsp/m68k/mvme167/bsp_specs8
-rw-r--r--c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in7
-rw-r--r--c/src/lib/libbsp/shared/bootcard.c2
-rw-r--r--c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S2
-rw-r--r--c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S6
-rw-r--r--c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S2
-rw-r--r--c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S2
-rw-r--r--c/src/lib/libcpu/m68k/m68040/fpsp/util.S8
-rw-r--r--c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S2
9 files changed, 23 insertions, 16 deletions
diff --git a/c/src/lib/libbsp/m68k/mvme167/bsp_specs b/c/src/lib/libbsp/m68k/mvme167/bsp_specs
index 61dac86b53..dcaf999860 100644
--- a/c/src/lib/libbsp/m68k/mvme167/bsp_specs
+++ b/c/src/lib/libbsp/m68k/mvme167/bsp_specs
@@ -7,16 +7,20 @@
*cpp:
%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
+*endfile:
+crtend.o%s crtn.o%s
+
*lib:
%{!qrtems: %(old_lib)} %{qrtems: --start-group \
%{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
-lc -lgcc --end-group \
-%{!qnolinkcmds: -T linkcmds%s}}
+%{!qelf: %{!qnolinkcmds: -T linkcmds%s}} %{qelf: %{!qnolinkcmd: -T
+elflinkcmds%s}}}
*startfile:
%{!qrtems: %(old_startfile)} %{qrtems: \
%{!qrtems_debug: start.o%s} \
-%{qrtems_debug: start_g.o%s}}
+%{qrtems_debug: start_g.o%s} crti.o%s crtbegin.o%s}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e start}
diff --git a/c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in b/c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in
index b4ef9002e8..78a2bdae79 100644
--- a/c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in
+++ b/c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in
@@ -23,7 +23,7 @@ C_O_FILES = $(C_PIECES:%=${ARCH}/%.o)
H_FILES =
-SRCS = $(srcdir)/linkcmds $(C_FILES) $(H_FILES)
+SRCS = $(srcdir)/linkcmds $(srcdir)/elflinkcmds $(C_FILES) $(H_FILES)
OBJS = $(C_O_FILES)
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
@@ -41,7 +41,9 @@ $(INSTALLDIRS):
# (OPTIONAL) Add local stuff here using +=
#
-DEFINES +=
+# USE_INIT_FINI tells main.c what C++ help we need.
+
+DEFINES += -DUSE_INIT_FINI
CPPFLAGS +=
CFLAGS +=
@@ -64,6 +66,7 @@ ${PGM}: ${SRCS} ${OBJS}
all: ${ARCH} $(SRCS) $(PGM)
$(INSTALL_CHANGE) $(srcdir)/linkcmds $(PROJECT_RELEASE)/lib
+ $(INSTALL_CHANGE) $(srcdir)/elflinkcmds $(PROJECT_RELEASE)/lib
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
diff --git a/c/src/lib/libbsp/shared/bootcard.c b/c/src/lib/libbsp/shared/bootcard.c
index e8fae61bd7..a1935997e0 100644
--- a/c/src/lib/libbsp/shared/bootcard.c
+++ b/c/src/lib/libbsp/shared/bootcard.c
@@ -27,7 +27,7 @@ extern rtems_configuration_table BSP_Configuration;
extern rtems_cpu_table Cpu_table;
/* Initialize C++ global Ctor/Dtor and initializes exception handling. */
-#ifdef USE_INIT_FINI
+#if defined(USE_INIT_FINI)
extern void _fini( void );
extern void _init( void );
#endif
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S b/c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S
index 1a2aa5603a..576f066388 100644
--- a/c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S
+++ b/c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S
@@ -486,7 +486,7 @@ A9_str:
fmovex (%a0),%fp0 //load X from memory
fabsx %fp0 //use abs(X)
tstw %d5 //LAMBDA is in lower word of d5
- bnes sc_mul //if neg (LAMBDA = 1), scale by mul
+ bne sc_mul //if neg (LAMBDA = 1), scale by mul
fdivx %fp1,%fp0 //calculate X / SCALE -> Y to fp0
bras A10_st //branch to A10
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S b/c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S
index 734c1b6961..03f0b084a0 100644
--- a/c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S
+++ b/c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S
@@ -232,7 +232,7 @@ nextlw:
//
m_sign:
btst #31,(%a0) //test sign of the mantissa
- beqs ap_st_z //if clear, go to append/strip zeros
+ beq ap_st_z //if clear, go to append/strip zeros
fnegx %fp0 //if set, negate fp0
//
@@ -290,7 +290,7 @@ ap_st_z:
cmpl #27,%d1 //test is with 27
ble pwrten //if abs(expA) <28, skip ap/st zeros
btst #30,(%a0) //check sign of exp
- bnes ap_st_n //if neg, go to neg side
+ bne ap_st_n //if neg, go to neg side
clrl %d1 //zero count reg
movel (%a0),%d4 //load lword 1 to d4
bfextu %d4{#28:#4},%d0 //get M16 in d0
@@ -338,7 +338,7 @@ ap_p_en:
tstl %d0 //check if d0 is zero
bnes ap_p_el //if not, get next bit
fmulx %fp1,%fp0 //mul mantissa by 10**(no_bits_shifted)
- bras pwrten //go calc pwrten
+ bra pwrten //go calc pwrten
//
// This section handles a negative adjusted exponent.
//
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S b/c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S
index fb7668f7f4..425faac9ab 100644
--- a/c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S
+++ b/c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S
@@ -79,7 +79,7 @@ not_fmovecr:
movew CMDREG1B(%a6),%d0
andl #0x7F,%d0
cmpil #0x38,%d0 //if the extension is >= $38,
- bges serror //it is illegal
+ bge serror //it is illegal
bfextu STAG(%a6){#0:#3},%d1
lsll #3,%d0 //make room for STAG
addl %d1,%d0 //combine for final index into table
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S b/c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S
index 1ecfa7e957..5f4921cf4b 100644
--- a/c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S
+++ b/c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S
@@ -173,7 +173,7 @@ PTENRP:
get_op:
clrb DY_MO_FLG(%a6)
tstb UFLG_TMP(%a6) //test flag for unsupp/unimp state
- beqs uni_getop
+ beq uni_getop
uns_getop:
btstb #direction_bit,CMDREG1B(%a6)
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/util.S b/c/src/lib/libcpu/m68k/m68040/fpsp/util.S
index 894b986072..f73f15be25 100644
--- a/c/src/lib/libcpu/m68k/m68040/fpsp/util.S
+++ b/c/src/lib/libcpu/m68k/m68040/fpsp/util.S
@@ -140,20 +140,20 @@ ovf_e1_exc:
//
ovf_fsgl:
clrl %d0
- bras ovf_res
+ bra ovf_res
ovff_sgl:
movel #0x00000001,%d0 //set single
- bras ovf_res
+ bra ovf_res
ovff_dbl:
movel #0x00000002,%d0 //set double
- bras ovf_res
+ bra ovf_res
//
// The precision is in the fpcr.
//
ovf_fpcr:
bfextu FPCR_MODE(%a6){#0:#2},%d0 //set round precision
- bras ovf_res
+ bra ovf_res
//
//
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S b/c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S
index 081b2cc2ca..f22dd71b8b 100644
--- a/c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S
+++ b/c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S
@@ -94,7 +94,7 @@ opc011:
cmpil #0,%d0 //if dest format is extended
beq dest_ext //then branch
cmpil #1,%d0 //if dest format is single
- beqs dest_sgl //then branch
+ beq dest_sgl //then branch
//
// fall through to dest_dbl
//