• Guo Ren's avatar
    riscv: compat: vdso: Add COMPAT_VDSO base code implementation · 0715372a
    Guo Ren authored
    There is no vgettimeofday supported in rv32 that makes simple to
    generate rv32 vdso code which only needs riscv64 compiler. Other
    architectures need change compiler or -m (machine parameter) to
    support vdso32 compiling. If rv32 support vgettimeofday (which
    cause C compile) in future, we would add CROSS_COMPILE to support
    that makes more requirement on compiler enviornment.
    
    linux-rv64/arch/riscv/kernel/compat_vdso/compat_vdso.so.dbg:
    file format elf64-littleriscv
    
    Disassembly of section .text:
    
    0000000000000800 <__vdso_rt_sigreturn>:
     800:   08b00893                li      a7,139
     804:   00000073                ecall
     808:   0000                    unimp
            ...
    
    000000000000080c <__vdso_getcpu>:
     80c:   0a800893                li      a7,168
     810:   00000073                ecall
     814:   8082                    ret
            ...
    
    0000000000000818 <__vdso_flush_icache>:
     818:   10300893                li      a7,259
     81c:   00000073                ecall
     820:   8082                    ret
    
    linux-rv32/arch/riscv/kernel/vdso/vdso.so.dbg:
    file format elf32-littleriscv
    
    Disassembly of section .text:
    
    00000800 <__vdso_rt_sigreturn>:
     800:   08b00893                li      a7,139
     804:   00000073                ecall
     808:   0000                    unimp
            ...
    
    0000080c <__vdso_getcpu>:
     80c:   0a800893                li      a7,168
     810:   00000073                ecall
     814:   8082                    ret
            ...
    
    00000818 <__vdso_flush_icache>:
     818:   10300893                li      a7,259
     81c:   00000073                ecall
     820:   8082                    ret
    
    Finally, reuse all *.S from vdso in compat_vdso that makes
    implementation clear and readable.
    Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
    Signed-off-by: default avatarGuo Ren <guoren@kernel.org>
    Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20220405071314.3225832-17-guoren@kernel.orgSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    0715372a
gen_compat_vdso_offsets.sh 154 Bytes