https://lists.rtems.org/pipermail/users/2019-December/067321.html
Hello, world I have a question about the use of trap 4 by RTEMS on Sparc32 (leon3). Since our app needs FP, we set the PSR[EF] bit during the boot process before RTEMS is invoked. Since we don't expect the fp_disabled trap (4) to occur, we install a fatal handler for it with rtems_interrupt_catch(&fatalTrapHandler, 4, &old); However, the fatalTrapHandler is invoked a short time after application start (we use the Init() task and start a handful of additional tasks, all of which have attribute RTEMS_FLOATING_POINT) and the PSR[EF] bit is indeed cleared. None of our tasks clears that bit, so we suspect RTEMS does it for some reason. Question: is an RTEMS/sparc application allowed to install a handler for trap 4? I could not find an answer in the docs for SPARC Specific Information. Thanks for any insight! Regards, Jens ________________________________ Tesat-Spacecom GmbH & Co. KG Sitz: Backnang; Registergericht: Amtsgericht Stuttgart HRA 270977 Persoenlich haftender Gesellschafter: Tesat-Spacecom Geschaeftsfuehrungs GmbH; Sitz: Backnang; Registergericht: Amtsgericht Stuttgart HRB 271658; Geschaeftsfuehrung: Dr. Marc Steckling, Kerstin Basche, Ralf Zimmermann
#if defined(SPARC_USE_LAZY_FP_SWITCH) FPDIS_TRAP(SYM(syscall_lazy_fp_switch)); ! 04 fp disabled 40000040:a1 48 00 00 rd %psr, %l0 40000044:29 10 00 bd sethi %hi(0x4002f400), %l4 40000048:81 c5 22 00 jmp %l4 + 0x200! 4002f600 <syscall_lazy_fp_switch> 4000004c:27 00 00 04 sethi %hi(0x1000), %l3 #else BAD_TRAP; ! 04 fp disabled #endif
源码目录下有sparc相关的内容:
rtems-4.6.0csrcliblibbspsparcshared
E:projectobsw tems-4.6.0cpukitscorecpusparccpu.c
_CPU_Initialize
_CPU_ISR_install_vector
_CPU_Context_Initialize