• WANG Xuerui's avatar
    LoongArch: Simplify the invtlb wrappers · 83d8b389
    WANG Xuerui authored
    
    
    The invtlb instruction has been supported by upstream LoongArch
    toolchains from day one, so ditch the raw opcode trickery and just use
    plain inline asm for it.
    
    While at it, also make the invtlb asm statements barriers, for proper
    modeling of the side effects. The functions are also marked as
    __always_inline instead of just "inline", because they cannot work at
    all if not inlined: the op argument will not be compile-time const in
    that case, thus failing to satisfy the "i" constraint.
    
    The signature of the other more specific invtlb wrappers contain unused
    arguments right now, but these are not removed right away in order for
    the patch to be focused. In the meantime, assertions are added to ensure
    no accidental misuse happens before the refactor. (The more specific
    wrappers cannot re-use the generic invtlb wrapper, because the ISA
    manual says $zero shall be used in case a particular op does not take
    the respective argument: re-using the generic wrapper would mean losing
    control over the register usage.)
    Signed-off-by: default avatarWANG Xuerui <git@xen0n.name>
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    83d8b389
tlb.h 3.88 KB