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.
This commit is contained in:
Joel Sherrill
1999-07-26 22:11:02 +00:00
parent 220ad7de67
commit 54f440d311
9 changed files with 23 additions and 16 deletions

View File

@@ -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}

View File

@@ -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) \

View File

@@ -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

View File

@@ -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

View File

@@ -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.
//

View File

@@ -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

View File

@@ -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)

View File

@@ -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
//
//

View File

@@ -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
//