• Mark Rutland's avatar
    arm64: move SCTLR_EL{1,2} assertions to <asm/sysreg.h> · 1c312e84
    Mark Rutland authored
    Currently we assert that the SCTLR_EL{1,2}_{SET,CLEAR} bits are
    self-consistent with an assertion in config_sctlr_el1(). This is a bit
    unusual, since config_sctlr_el1() doesn't make use of these definitions,
    and is far away from the definitions themselves.
    
    We can use the CPP #error directive to have equivalent assertions in
    <asm/sysreg.h>, next to the definitions of the set/clear bits, which is
    a bit clearer and simpler.
    
    At the same time, lets fill in the upper 32 bits for both registers in
    their respective RES0 definitions. This could be a little nicer with
    GENMASK_ULL(63, 32), but this currently lives in <linux/bitops.h>, which
    cannot safely be included from assembly, as <asm/sysreg.h> can.
    
    Note the when the preprocessor evaluates an expression for an #if
    directive, all signed or unsigned values are treated as intmax_t or
    uintmax_t respectively. To avoid ambiguity, we define explicitly define
    the mask of all 64 bits.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Cc: Dave Martin <dave.martin@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    1c312e84
sysreg.h 24.9 KB