On Sun, Aug 13, 2023 at 09:39:44PM +0800, Zhangjin Wu wrote:
And we're done, you can then keep the simplified __sysret() macro for all other call places.
Now, this issue is near to the end ;-)
I've now pushed the simplified fix (without changing the SET_ERRNO() macro, enough last minute breaking changes for now) in branch 20230815-for-6.6-2.
The tests pass and riscv/loongarch are even very slightly smaller than before (~8 bytes) but again that doesn't count as it depends on how the compiler decides to arrange if/else branches.
Tested 20230815-for-6.6-2 with latest Arnd's gcc 13.2.0 (left: old, right: new), no warning, no failure:
// run-user $ for arch in ${ARCHS[@]}; do printf "%9s: " $arch; make run-user XARCH=$arch | grep status | tr '\n' ' '; \ size nolibc-test | tail -1 | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f2; done i386: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 19654 > 19508 x86_64: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 22337 > 22011 arm64: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 26292 > 25868 arm: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 23140 > 23112 mips: 160 test(s): 157 passed, 3 skipped, 0 failed => status: warning 23164 > 22924 // mips-linux- has smaller size, here uses mips64 ppc: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 26812 > 26628 ppc64: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 27380 > 27204 ppc64le: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 28004 > 27828 riscv: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 22062 > 21794 s390: 160 test(s): 157 passed, 3 skipped, 0 failed => status: warning 22592 > 22192
// kernel build + run arch/board | result ------------|------------ arm/vexpress-a9 | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. arm/virt | 160 test(s): 156 passed, 4 skipped, 0 failed => status: warning. aarch64/virt | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. ppc/g3beige | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. ppc/ppce500 | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. ppc64le/pseries | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. ppc64le/powernv | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. ppc64/pseries | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. ppc64/powernv | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. i386/pc | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. x86_64/pc | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. mipsel/malta | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. loongarch64/virt | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. riscv64/virt | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning. s390x/s390-ccw-virtio | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
Thanks, Zhangjin
I'll let Shuah know about these late fixes.
Regards, Willy