Skip to content
  • Palmer Dabbelt's avatar
    RISC-V: Stop relying on GCC's register allocator's hueristics · 52e7c52d
    Palmer Dabbelt authored
    
    
    GCC allows users to hint to the register allocation that a variable should be
    placed in a register by using a syntax along the lines of
    
        function(...) {
            register long in_REG __asm__("REG");
        }
    
    We've abused this a bit throughout the RISC-V port to access fixed registers
    directly as C variables.  In practice it's never going to blow up because GCC
    isn't going to allocate these registers, but it's not a well defined syntax so
    we really shouldn't be relying upon this.  Luckily there is a very similar but
    well defined syntax that allows us to still access these registers directly as
    C variables, which is to simply declare the register variables globally.  For
    fixed variables this doesn't change the ABI.
    
    LLVM disallows this ambiguous syntax, so this isn't just strictly a formatting
    change.
    
    Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
    52e7c52d