ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
25 марта
1577890 Топик полностью
Nikolay_Po (Сегодня, 15:57, просмотров: 44) ответил klen на таки успел к новому году закрыть маленький гештальт (заноза в заднице) - допилл свой порт FreeRTOS для qkV4f - реализовано ленивое сохранение контекста fpu. время при переключении тратится только если таска испачкала регистры fpu.
Тащ Клён! Зачем такой длинный ассемблер в Си? Нельзя его перенести в port_asm.s? 
    asm volatile ( 
	"csrw fcsr,%[fcsr]   ;"
	"flw ft0,  %[ft0]    ;"
	"flw ft1,  %[ft1]    ;"
	"flw ft2,  %[ft2]    ;"
	"flw ft3,  %[ft3]    ;"
	"flw ft4,  %[ft4]    ;"
	"flw ft5,  %[ft5]    ;"
	"flw ft6,  %[ft6]    ;"
	"flw ft7,  %[ft7]    ;"
	"flw fs0,  %[fs0]    ;"
	"flw fs1,  %[fs1]    ;"
	"flw fa0,  %[fa0]    ;"
	"flw fa1,  %[fa1]    ;"
	"flw fa2,  %[fa2]    ;"
	"flw fa3,  %[fa3]    ;"
	"flw fa4,  %[fa4]    ;"
	"flw fa5,  %[fa5]    ;"
	"flw fa6,  %[fa6]    ;"
	"flw fa7,  %[fa7]    ;"
	"flw fs5,  %[fs5]    ;"
	"flw fs6,  %[fs6]    ;"
	"flw fs7,  %[fs7]    ;"
	"flw fs8,  %[fs8]    ;"
	"flw fs9,  %[fs9]    ;"
	"flw fs10, %[fs10]   ;"
	"flw fs11, %[fs11]   ;"
	"flw ft8,  %[ft8]    ;"
	"flw ft9,  %[ft9]    ;"
	"flw ft10, %[ft10]   ;"
	"flw ft11, %[ft11]   ;"
	   : :
	       [fcsr]"r"(fs->fcsr),
	       [ft0] "m"(fs->fp[ 0]),
	       [ft1] "m"(fs->fp[ 1]),
	       [ft2] "m"(fs->fp[ 2]),
	       [ft3] "m"(fs->fp[ 3]),
	       [ft4] "m"(fs->fp[ 4]),
	       [ft5] "m"(fs->fp[ 5]),
	       [ft6] "m"(fs->fp[ 6]),
	       [ft7] "m"(fs->fp[ 7]),
	       [fs0] "m"(fs->fp[ 8]),
	       [fs1] "m"(fs->fp[ 9]),
	       [fa0] "m"(fs->fp[10]),
	       [fa1] "m"(fs->fp[11]),
	       [fa2] "m"(fs->fp[12]),
	       [fa3] "m"(fs->fp[13]),
	       [fa4] "m"(fs->fp[14]),
	       [fa5] "m"(fs->fp[15]),
	       [fa6] "m"(fs->fp[16]),
	       [fa7] "m"(fs->fp[17]),
	       [fs2] "m"(fs->fp[18]),
	       [fs3] "m"(fs->fp[19]),
	       [fs4] "m"(fs->fp[20]),
	       [fs5] "m"(fs->fp[21]),
	       [fs6] "m"(fs->fp[22]),
	       [fs7] "m"(fs->fp[23]),
	       [fs8] "m"(fs->fp[24]),
	       [fs9] "m"(fs->fp[25]),
	       [fs10]"m"(fs->fp[26]),
	       [fs11]"m"(fs->fp[27]),
	       [ft8] "m"(fs->fp[28]),
	       [ft9] "m"(fs->fp[29]),
	       [ft10]"m"(fs->fp[30]),
	       [ft11]"m"(fs->fp[31])
	     );

Не могу скомпилировать штатным GCC15 - жалуется:

../FreeRTOS/FreeRTOS/portable/GCC/kernel_kgp_portable_riscv_qkv4_kgp/port.c:455:5: error: more than 30 operands in 'asm'