[PATCH 05/21] mips: libgloss: A few minor fixes
Aleksandar Rikalo <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
From: Jaydeep Patil <[email protected]> Signed-off-by: Jaydeep Patil <[email protected]> Signed-off-by: Aleksandar Rikalo <[email protected]> --- libgloss/config/mips.mt | 61 ++++++++----- libgloss/configure | 12 ++- libgloss/kill.c | 1 + libgloss/mips/Makefile.in | 181 ++++++++++++++++++++++++++++++-------- libgloss/mips/idtmon.S | 3 +- libgloss/mips/test.c | 7 +- libgloss/print.c | 2 + 7 files changed, 202 insertions(+), 65 deletions(-) diff --git a/libgloss/config/mips.mt b/libgloss/config/mips.mt index 814caf957..7be62dc5f 100644 --- a/libgloss/config/mips.mt +++ b/libgloss/config/mips.mt @@ -4,47 +4,62 @@ # are mentioned here, they are not used for all targets. # close.o: ${srcdir}/../close.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? fstat.o: ${srcdir}/../fstat.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? getpid.o: ${srcdir}/../getpid.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? isatty.o: ${srcdir}/../isatty.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? kill.o: ${srcdir}/../kill.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? lseek.o: ${srcdir}/../lseek.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? open.o: ${srcdir}/../open.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? print.o: ${srcdir}/../print.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? putnum.o: ${srcdir}/../putnum.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? read.o: ${srcdir}/../read.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? stat.o: ${srcdir}/../stat.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? unlink.o: ${srcdir}/../unlink.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? write.o: ${srcdir}/../write.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? - + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? get_ram_range.o: ${srcdir}/hal/get_ram_range.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? link.o: $(srcdir)/hal/link.c - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $? + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $? + +# These are the UHI implementations of semi-hosting functions + +uhi_getargs.o: $(srcdir)/uhi/uhi_getargs.S + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< +uhi_%.o: $(srcdir)/uhi/uhi_%.c + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< + +# These are the YAMON specific versions of semi-hosting which fall +# back to UHI for operations not supported natively on YAMON +yamon_%.o: $(srcdir)/uhi/yamon_%.c + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< # Exception and interrupt handling support mips_excpt_handler.o: $(srcdir)/hal/mips_excpt_handler.c - $(CC) $(CFLAGS_FOR_TARGET) $(HALINCLUDE) -DVERBOSE_EXCEPTIONS=1 -O2 $(INCLUDES) -c $(CFLAGS) $< + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) -DVERBOSE_EXCEPTIONS=1 $(INCLUDES) -c $(CFLAGS) $< mips_excpt_handler_quiet.o: $(srcdir)/hal/mips_excpt_handler.c - $(CC) $(CFLAGS_FOR_TARGET) $(HALINCLUDE) -O2 $(INCLUDES) -c $(CFLAGS) $< -o $@ + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< -o $@ %.o: $(srcdir)/hal/%.S - $(CC) $(CFLAGS_FOR_TARGET) $(HALINCLUDE) -O2 $(INCLUDES) -c $(CFLAGS) $< -o $@ + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< -o $@ %.o: $(srcdir)/hal/%.c - $(CC) $(CFLAGS_FOR_TARGET) $(HALINCLUDE) -O2 $(INCLUDES) -c $(CFLAGS) $< -o $@ -mips_excpt_isr_0.o: - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) $(HALINCLUDE) -c -DDEF=__isr_vec_0 -DREF=__isr_vec_0 -DISR=_mips_isr_0 -DZERO ${srcdir}/hal/mips_excpt_isr_fragment.S -o $@ + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< -o $@ +mips_excpt_isr_000.o: + $(CC) $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(INCLUDES) $(CFLAGS) -c -DDEF=__isr_vec_000 -DREF=__isr_vec_000 -DISR=_mips_isr_000 -DZERO ${srcdir}/hal/mips_excpt_isr_fragment.S -o $@ mips_excpt_isr_%.o: - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) $(HALINCLUDE) -c -DDEF=__isr_vec_$* -DREF=__isr_vec_$(shell expr $* - 1) -DISR=_mips_isr_$* ${srcdir}/hal/mips_excpt_isr_fragment.S -o $@ + $(CC) $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(INCLUDES) $(CFLAGS) -c -DDEF=__isr_vec_$* -DREF=__isr_vec_$(shell printf '%03d' `expr $* - 1`) -DISR=_mips_isr_$* ${srcdir}/hal/mips_excpt_isr_fragment.S -o $@ + +# Boot code +%.o: $(srcdir)/boot/%.S + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) -c $(CFLAGS) $< diff --git a/libgloss/configure b/libgloss/configure index a0cc8b50f..e357e7fc7 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -5463,11 +5463,19 @@ case "${target}" in ;; mipsisa32-*-* | mipsisa32el-*-* | \ mipsisa32r2-*-* | mipsisa32r2el-*-* | \ + mipsisa32r6-*-* | mipsisa32r6el-*-* | \ mipsisa64*-*-*) MIPS_CRT0="crt0_cfe.o crt0_cygmon.o crt0.o" MIPS_SCRIPT_LIST="idt32 idt64 cfe" MIPS_BSP_LIST="libcygmon.a libidt.a libcfe.a" ;; + mips*-mti*-* | mips*-img*-*) + MIPS_CRT0="crt0.o" + MIPS_PART_SPECIFIC_OBJ= + MIPS_PART_SPECIFIC_DEFINES= + MIPS_SCRIPT_LIST="idt nullmon mti32 mti64_n32 mti64_64 uhi32 uhi64_64 uhi64_n32 malta32-yamon bootcode" + MIPS_BSP_LIST="libidt.a libnullmon.a libuhi.a libyamon.a libhal.a libcm3_impl.a" + ;; mips*-lsi*-*) MIPS_PART_SPECIFIC_OBJ="entry.o" MIPS_SCRIPT_LIST="lsi" @@ -5487,8 +5495,8 @@ case "${target}" in mips*) MIPS_CRT0="crt0_cfe.o crt0.o" MIPS_PART_SPECIFIC_OBJ="vr4300.o cma101.o" - MIPS_SCRIPT_LIST="idt pmon ddb ddb-kseg0 lsi cfe idtecoff nullmon sde32 sde64 mti32 mti64 mti64_n32 mti64_64" - MIPS_BSP_LIST="libidt.a libpmon.a liblsi.a libcfe.a libnullmon.a" + MIPS_SCRIPT_LIST="idt pmon ddb ddb-kseg0 lsi cfe idtecoff nullmon sde32 sde64 mti32 mti64 mti64_n32 mti64_64 mti32-uhi mti64-uhi mti64_64-uhi mti64_n32-uhi malta32-yamon bootcode" + MIPS_BSP_LIST="libidt.a libpmon.a liblsi.a libcfe.a libnullmon.a libuhi.a libyamon.a libhal.a libcm3_impl.a" ;; esac diff --git a/libgloss/kill.c b/libgloss/kill.c index a0eaee75b..9650fb800 100644 --- a/libgloss/kill.c +++ b/libgloss/kill.c @@ -13,6 +13,7 @@ * they apply. */ #include "glue.h" +void _exit(int); /* * kill -- go out via exit... diff --git a/libgloss/mips/Makefile.in b/libgloss/mips/Makefile.in index c1e22f1e4..3d96a449e 100644 --- a/libgloss/mips/Makefile.in +++ b/libgloss/mips/Makefile.in @@ -67,7 +67,8 @@ OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ CRT0 = @MIPS_CRT0@ PCRT0 = pcrt0.o GENOBJS = syscalls.o fstat.o getpid.o isatty.o kill.o \ - lseek.o print.o putnum.o stat.o unlink.o + lseek.o print.o putnum.o stat.o unlink.o __exit.o link.o \ + get_ram_range.o GENOBJS2 = open.o close.o read.o write.o IDTOBJS = idtmon.o @MIPS_PART_SPECIFIC_OBJ@ ${GENOBJS} PMONOBJS = pmon.o @MIPS_PART_SPECIFIC_OBJ@ ${GENOBJS} @@ -77,22 +78,94 @@ JMR3904OBJS = jmr3904-io.o @MIPS_PART_SPECIFIC_OBJ@ ${GENOBJS} ${GENOBJS2} CFEOBJS = cfe.o cfe_api.o cfe_mem.o @MIPS_PART_SPECIFIC_OBJ@ ${GENOBJS} ${GENOBJS2} CYGMONOBJS = open.o close.o cygmon.o @MIPS_PART_SPECIFIC_OBJ@ ${GENOBJS} -define GENISROBJ -$(eval ISROBJS:=)\ -$(if $(filter ${1},0),,\ -$(call GENISROBJ_DO,${1})\ -)\ -$(eval ISROBJS+=mips_excpt_isr_fallback.o) -endef -define GENISROBJ_DO -$(if $(word ${1}, ${ISROBJS}),,\ -$(eval ISROBJS+=mips_excpt_isr_$(words $(ISROBJS)).o)\ - $(call GENISROBJ_DO,${1})\ -) -endef - -$(call GENISROBJ,256) +ISROBJS = mips_excpt_isr_fallback.o +ISROBJS += mips_excpt_isr_000.o mips_excpt_isr_001.o mips_excpt_isr_002.o +ISROBJS += mips_excpt_isr_003.o mips_excpt_isr_004.o mips_excpt_isr_005.o +ISROBJS += mips_excpt_isr_006.o mips_excpt_isr_007.o mips_excpt_isr_008.o +ISROBJS += mips_excpt_isr_009.o mips_excpt_isr_010.o mips_excpt_isr_011.o +ISROBJS += mips_excpt_isr_012.o mips_excpt_isr_013.o mips_excpt_isr_014.o +ISROBJS += mips_excpt_isr_015.o mips_excpt_isr_016.o mips_excpt_isr_017.o +ISROBJS += mips_excpt_isr_018.o mips_excpt_isr_019.o mips_excpt_isr_020.o +ISROBJS += mips_excpt_isr_021.o mips_excpt_isr_022.o mips_excpt_isr_023.o +ISROBJS += mips_excpt_isr_024.o mips_excpt_isr_025.o mips_excpt_isr_026.o +ISROBJS += mips_excpt_isr_027.o mips_excpt_isr_028.o mips_excpt_isr_029.o +ISROBJS += mips_excpt_isr_030.o mips_excpt_isr_031.o mips_excpt_isr_032.o +ISROBJS += mips_excpt_isr_033.o mips_excpt_isr_034.o mips_excpt_isr_035.o +ISROBJS += mips_excpt_isr_036.o mips_excpt_isr_037.o mips_excpt_isr_038.o +ISROBJS += mips_excpt_isr_039.o mips_excpt_isr_040.o mips_excpt_isr_041.o +ISROBJS += mips_excpt_isr_042.o mips_excpt_isr_043.o mips_excpt_isr_044.o +ISROBJS += mips_excpt_isr_045.o mips_excpt_isr_046.o mips_excpt_isr_047.o +ISROBJS += mips_excpt_isr_048.o mips_excpt_isr_049.o mips_excpt_isr_050.o +ISROBJS += mips_excpt_isr_051.o mips_excpt_isr_052.o mips_excpt_isr_053.o +ISROBJS += mips_excpt_isr_054.o mips_excpt_isr_055.o mips_excpt_isr_056.o +ISROBJS += mips_excpt_isr_057.o mips_excpt_isr_058.o mips_excpt_isr_059.o +ISROBJS += mips_excpt_isr_060.o mips_excpt_isr_061.o mips_excpt_isr_062.o +ISROBJS += mips_excpt_isr_063.o mips_excpt_isr_064.o mips_excpt_isr_065.o +ISROBJS += mips_excpt_isr_066.o mips_excpt_isr_067.o mips_excpt_isr_068.o +ISROBJS += mips_excpt_isr_069.o mips_excpt_isr_070.o mips_excpt_isr_071.o +ISROBJS += mips_excpt_isr_072.o mips_excpt_isr_073.o mips_excpt_isr_074.o +ISROBJS += mips_excpt_isr_075.o mips_excpt_isr_076.o mips_excpt_isr_077.o +ISROBJS += mips_excpt_isr_078.o mips_excpt_isr_079.o mips_excpt_isr_080.o +ISROBJS += mips_excpt_isr_081.o mips_excpt_isr_082.o mips_excpt_isr_083.o +ISROBJS += mips_excpt_isr_084.o mips_excpt_isr_085.o mips_excpt_isr_086.o +ISROBJS += mips_excpt_isr_087.o mips_excpt_isr_088.o mips_excpt_isr_089.o +ISROBJS += mips_excpt_isr_090.o mips_excpt_isr_091.o mips_excpt_isr_092.o +ISROBJS += mips_excpt_isr_093.o mips_excpt_isr_094.o mips_excpt_isr_095.o +ISROBJS += mips_excpt_isr_096.o mips_excpt_isr_097.o mips_excpt_isr_098.o +ISROBJS += mips_excpt_isr_099.o mips_excpt_isr_100.o mips_excpt_isr_101.o +ISROBJS += mips_excpt_isr_102.o mips_excpt_isr_103.o mips_excpt_isr_104.o +ISROBJS += mips_excpt_isr_105.o mips_excpt_isr_106.o mips_excpt_isr_107.o +ISROBJS += mips_excpt_isr_108.o mips_excpt_isr_109.o mips_excpt_isr_110.o +ISROBJS += mips_excpt_isr_111.o mips_excpt_isr_112.o mips_excpt_isr_113.o +ISROBJS += mips_excpt_isr_114.o mips_excpt_isr_115.o mips_excpt_isr_116.o +ISROBJS += mips_excpt_isr_117.o mips_excpt_isr_118.o mips_excpt_isr_119.o +ISROBJS += mips_excpt_isr_120.o mips_excpt_isr_121.o mips_excpt_isr_122.o +ISROBJS += mips_excpt_isr_123.o mips_excpt_isr_124.o mips_excpt_isr_125.o +ISROBJS += mips_excpt_isr_126.o mips_excpt_isr_127.o mips_excpt_isr_128.o +ISROBJS += mips_excpt_isr_129.o mips_excpt_isr_130.o mips_excpt_isr_131.o +ISROBJS += mips_excpt_isr_132.o mips_excpt_isr_133.o mips_excpt_isr_134.o +ISROBJS += mips_excpt_isr_135.o mips_excpt_isr_136.o mips_excpt_isr_137.o +ISROBJS += mips_excpt_isr_138.o mips_excpt_isr_139.o mips_excpt_isr_140.o +ISROBJS += mips_excpt_isr_141.o mips_excpt_isr_142.o mips_excpt_isr_143.o +ISROBJS += mips_excpt_isr_144.o mips_excpt_isr_145.o mips_excpt_isr_146.o +ISROBJS += mips_excpt_isr_147.o mips_excpt_isr_148.o mips_excpt_isr_149.o +ISROBJS += mips_excpt_isr_150.o mips_excpt_isr_151.o mips_excpt_isr_152.o +ISROBJS += mips_excpt_isr_153.o mips_excpt_isr_154.o mips_excpt_isr_155.o +ISROBJS += mips_excpt_isr_156.o mips_excpt_isr_157.o mips_excpt_isr_158.o +ISROBJS += mips_excpt_isr_159.o mips_excpt_isr_160.o mips_excpt_isr_161.o +ISROBJS += mips_excpt_isr_162.o mips_excpt_isr_163.o mips_excpt_isr_164.o +ISROBJS += mips_excpt_isr_165.o mips_excpt_isr_166.o mips_excpt_isr_167.o +ISROBJS += mips_excpt_isr_168.o mips_excpt_isr_169.o mips_excpt_isr_170.o +ISROBJS += mips_excpt_isr_171.o mips_excpt_isr_172.o mips_excpt_isr_173.o +ISROBJS += mips_excpt_isr_174.o mips_excpt_isr_175.o mips_excpt_isr_176.o +ISROBJS += mips_excpt_isr_177.o mips_excpt_isr_178.o mips_excpt_isr_179.o +ISROBJS += mips_excpt_isr_180.o mips_excpt_isr_181.o mips_excpt_isr_182.o +ISROBJS += mips_excpt_isr_183.o mips_excpt_isr_184.o mips_excpt_isr_185.o +ISROBJS += mips_excpt_isr_186.o mips_excpt_isr_187.o mips_excpt_isr_188.o +ISROBJS += mips_excpt_isr_189.o mips_excpt_isr_190.o mips_excpt_isr_191.o +ISROBJS += mips_excpt_isr_192.o mips_excpt_isr_193.o mips_excpt_isr_194.o +ISROBJS += mips_excpt_isr_195.o mips_excpt_isr_196.o mips_excpt_isr_197.o +ISROBJS += mips_excpt_isr_198.o mips_excpt_isr_199.o mips_excpt_isr_200.o +ISROBJS += mips_excpt_isr_201.o mips_excpt_isr_202.o mips_excpt_isr_203.o +ISROBJS += mips_excpt_isr_204.o mips_excpt_isr_205.o mips_excpt_isr_206.o +ISROBJS += mips_excpt_isr_207.o mips_excpt_isr_208.o mips_excpt_isr_209.o +ISROBJS += mips_excpt_isr_210.o mips_excpt_isr_211.o mips_excpt_isr_212.o +ISROBJS += mips_excpt_isr_213.o mips_excpt_isr_214.o mips_excpt_isr_215.o +ISROBJS += mips_excpt_isr_216.o mips_excpt_isr_217.o mips_excpt_isr_218.o +ISROBJS += mips_excpt_isr_219.o mips_excpt_isr_220.o mips_excpt_isr_221.o +ISROBJS += mips_excpt_isr_222.o mips_excpt_isr_223.o mips_excpt_isr_224.o +ISROBJS += mips_excpt_isr_225.o mips_excpt_isr_226.o mips_excpt_isr_227.o +ISROBJS += mips_excpt_isr_228.o mips_excpt_isr_229.o mips_excpt_isr_230.o +ISROBJS += mips_excpt_isr_231.o mips_excpt_isr_232.o mips_excpt_isr_233.o +ISROBJS += mips_excpt_isr_234.o mips_excpt_isr_235.o mips_excpt_isr_236.o +ISROBJS += mips_excpt_isr_237.o mips_excpt_isr_238.o mips_excpt_isr_239.o +ISROBJS += mips_excpt_isr_240.o mips_excpt_isr_241.o mips_excpt_isr_242.o +ISROBJS += mips_excpt_isr_243.o mips_excpt_isr_244.o mips_excpt_isr_245.o +ISROBJS += mips_excpt_isr_246.o mips_excpt_isr_247.o mips_excpt_isr_248.o +ISROBJS += mips_excpt_isr_249.o mips_excpt_isr_250.o mips_excpt_isr_251.o +ISROBJS += mips_excpt_isr_252.o mips_excpt_isr_253.o mips_excpt_isr_254.o +ISROBJS += mips_excpt_isr_255.o UHIOBJS = uhi_assert.o uhi_close.o uhi_exit.o uhi_fstat.o \ uhi_lseek.o uhi_open.o uhi_plog.o \ @@ -104,14 +177,18 @@ UHIOBJS = uhi_assert.o uhi_close.o uhi_exit.o uhi_fstat.o \ YAMONOBJS = yamon_read.o yamon_write.o yamon_exit.o yamon_close.o \ yamon_fstat.o yamon_exception.o -HALOBJ = mips64_tlb.o mips_clean_cache.o mips_flush_cache.o mips_l2size.o \ - mips_lock_cache.o mips_size_cache.o mips_sync_cache.o mips_tlb.o \ - mips_fp.o mips_msa.o \ +HALOBJ = mips_clean_cache.o mips_flush_cache.o mips_l2size.o \ + mips_lock_cache.o mips_size_cache.o mips_sync_cache.o \ + mips_fp.o \ mips_excpt_entry.o mips_excpt_handler.o mips_excpt_handler_quiet.o \ - mips_excpt_register.o mips_excpt_boot.o mips_xpa.o \ + mips_excpt_register.o mips_excpt_boot.o \ mips_intctrl.o $(ISROBJS) -HALINCLUDE = -I $(srcdir)/include +HALOBJ += mips_tlb.o + +HALOBJ += mips64_tlb.o mips_xpa.o mips_msa.o + +BOOTOBJ = reset.o init_cp0.o init_caches.o init_tlb.o init_l23caches.o CM3OBJ_IMPL = mips_cm3_l2size.o init_cm3l2.o @@ -120,7 +197,8 @@ CM3AR = libcm3.a # Nullmon cannot support read and write, but the test cases pull them in via libs NULLMONOBJS = nullmon.o @MIPS_PART_SPECIFIC_OBJ@ ${GENOBJS} -CFLAGS = -g +EXAMPLES = custom_excpt fault_recovery interrupt_handler isr_vector_space \ + romable romable_minimal romable_predef EXAMPLES = custom_excpt fault_recovery interrupt_handler isr_vector_space \ romable romable_minimal romable_predef romable_predef_xip @@ -136,6 +214,14 @@ PART_SPECIFIC_DEFINES = @MIPS_PART_SPECIFIC_DEFINES@ # Host specific makefile fragment comes in here. @host_makefile_frag@ +HALCFLAGS += -g \ + -fdebug-prefix-map=$(srcdir)=toolchain/share/mips \ + -fdebug-prefix-map=$(srcdir)/include=toolchain/$(target_alias)/include \ + -Wa,--debug-prefix-map=$(srcdir)=toolchain/share/mips \ + -Wa,--debug-prefix-map=$(srcdir)/include=toolchain/$(target_alias)/include \ + -Werror + +HALCFLAGS += -I $(srcdir)/include # # build a test program for each target board. Just trying to get # it to link is a good test, so we ignore all the errors for now. @@ -183,6 +269,22 @@ libcfe.a: $(CFEOBJS) ${AR} ${ARFLAGS} $@ $(CFEOBJS) ${RANLIB} $@ +libuhi.a: $(UHIOBJS) + ${AR} ${ARFLAGS} $@ $(UHIOBJS) + ${RANLIB} $@ + +libyamon.a: $(YAMONOBJS) + ${AR} ${ARFLAGS} $@ $(YAMONOBJS) + ${RANLIB} $@ + +libhal.a: $(HALOBJ) $(BOOTOBJ) + ${AR} ${ARFLAGS} $@ $^ + ${RANLIB} $@ + +libcm3_impl.a: $(CM3OBJ_IMPL) + ${AR} ${ARFLAGS} $@ $^ + ${RANLIB} $@ + # nullmon.a , This is what you want if you want crt0 but NO mon services # Supports GDB sim testing, board bringups, ICE operation. libnullmon.a: $(NULLMONOBJS) @@ -234,10 +336,10 @@ cfe-test.dis: cfe-test.x $(OBJDUMP) -d cfe-test.x > $@ cfe-test: cfe-test.srec cfe-test.dis -doc: +doc: clean mostlyclean: - rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x + rm -f a.out core *.i *~ *.a *.o *-test *.srec *.dis *.map *.x distclean maintainer-clean realclean: clean rm -f Makefile config.status a.out @@ -248,6 +350,7 @@ install: @for file in $(CRT0) $(PCRT0) $(BSP); do \ $(INSTALL_DATA) $${file} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${file}; \ done + $(INSTALL_DATA) ${srcdir}/hal/libcm3.a $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/libcm3.a @for script in ${SCRIPTS}; do\ $(INSTALL_DATA) ${srcdir}/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \ done @@ -294,39 +397,43 @@ clean-info: test.o: ${srcdir}/test.c # these are for the BSPs -crt0.o: ${srcdir}/crt0.S -pcrt0.o: ${srcdir}/crt0.S - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) -DGCRT0 ${srcdir}/crt0.S -o ${PCRT0} +crt0.o: ${srcdir}/hal/crt0.S + $(CC) -c $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(CFLAGS) $(INCLUDES) $^ -o $@ +pcrt0.o: ${srcdir}/hal/crt0.S + $(CC) -c $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(CFLAGS) $(INCLUDES) -DGCRT0 $^ -o ${PCRT0} crt0_cfe.o: ${srcdir}/crt0_cfe.S crt0_cygmon.o: ${srcdir}/crt0_cygmon.S idtmon.o: ${srcdir}/idtmon.S pmon.o: ${srcdir}/pmon.S - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $(PART_SPECIFIC_DEFINES) ${srcdir}/pmon.S -o pmon.o + $(CC) -c $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(CFLAGS) $(PART_SPECIFIC_DEFINES) $^ -o $@ vr4300.o: ${srcdir}/vr4300.S - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/vr4300.S + $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $^ -o $@ vr5xxx.o: ${srcdir}/vr5xxx.S - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/vr5xxx.S + $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $^ -o $@ lsipmon.o: $(srcdir)/lsipmon.S $(srcdir)/pmon.S +__exit.o: ${srcdir}/hal/__exit.c + $(CC) -c $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(INCLUDES) $(CFLAGS) $^ -o $@ jmr3904-io.o: ${srcdir}/jmr3904-io.c - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/jmr3904-io.c -o $@ + $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $^ -o $@ cfe.o: ${srcdir}/cfe.c ${srcdir}/cfe_api.h - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/cfe.c -o $@ + $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $< -o $@ cfe_api.o: ${srcdir}/cfe_api.c ${srcdir}/cfe_api.h ${srcdir}/cfe_api_int.h - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/cfe_api.c -o $@ + $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $< -o $@ cfe_mem.o: ${srcdir}/cfe_mem.c ${srcdir}/cfe_api.h - $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/cfe_mem.c -o $@ + $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $< -o $@ # cma101 can not be compiled mips16, if a mips16 version is needed then # it will have to be built, then this rule can be scrapped, allowing # the implicit rule to run. cma101.o: ${srcdir}/cma101.c - $(CC) -c $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) $(CFLAGS) -mno-mips16 ${srcdir}/cma101.c + $(CC) -c $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) $(CFLAGS) -mno-mips16 $^ # cygmon can not be compiled as mips16 since it uses the syscall instruction cygmon.o: ${srcdir}/cygmon.c - $(CC) -c $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) $(CFLAGS) -mno-mips16 ${srcdir}/cygmon.c + $(CC) -c $(CFLAGS_FOR_TARGET) -O2 $(HALCFLAGS) $(INCLUDES) $(CFLAGS) -mno-mips16 $^ -syscalls.o: ${srcdir}/syscalls.c +syscalls.o: ${srcdir}/hal/syscalls.c + $(CC) -c $(CFLAGS_FOR_TARGET) $(HALCFLAGS) $(INCLUDES) $(CFLAGS) $< -o $@ # target specific makefile fragment comes in here. @target_makefile_frag@ diff --git a/libgloss/mips/idtmon.S b/libgloss/mips/idtmon.S index 304aaa412..d09b2e0b2 100644 --- a/libgloss/mips/idtmon.S +++ b/libgloss/mips/idtmon.S @@ -28,7 +28,8 @@ #define INDIRECT(name,index) \ .globl name; \ .ent name; \ -name: la $2,+(0xbfc00000+((index)*8)); \ +name: lui $2,%hi(0xbfc00000+((index)*8)); \ + addiu $2,$2,%lo(0xbfc00000+((index)*8)); \ j $2; \ .end name diff --git a/libgloss/mips/test.c b/libgloss/mips/test.c index a99347914..0cdf7803c 100644 --- a/libgloss/mips/test.c +++ b/libgloss/mips/test.c @@ -1,4 +1,7 @@ -main() +void outbyte (char); +void print (char *); + +int main (void) { outbyte ('&'); outbyte ('@'); @@ -9,5 +12,5 @@ main() print ("\r\nDone..."); - return; + return 0; } diff --git a/libgloss/print.c b/libgloss/print.c index 76d543b67..1621eef8a 100644 --- a/libgloss/print.c +++ b/libgloss/print.c @@ -14,6 +14,8 @@ */ #include "glue.h" +void outbyte (char); + /* * print -- do a raw print of a string */ -- 2.25.1