Тащ Клён! Зачем такой длинный ассемблер в Си? Нельзя его перенести
в 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'