• Mark Rutland's avatar
    arm64: extable: consolidate definitions · 819771cc
    Mark Rutland authored
    In subsequent patches we'll alter the structure and usage of struct
    exception_table_entry. For inline assembly, we create these using the
    `_ASM_EXTABLE()` CPP macro defined in <asm/uaccess.h>, and for plain
    assembly code we use the `_asm_extable()` GAS macro defined in
    <asm/assembler.h>, which are largely identical save for different
    escaping and stringification requirements.
    
    This patch moves the common definitions to a new <asm/asm-extable.h>
    header, so that it's easier to keep the two in-sync, and to remove the
    implication that these are only used for uaccess helpers (as e.g.
    load_unaligned_zeropad() is only used on kernel memory, and depends upon
    `_ASM_EXTABLE()`.
    
    At the same time, a few minor modifications are made for clarity and in
    preparation for subsequent patches:
    
    * The structure creation is factored out into an `__ASM_EXTABLE_RAW()`
      macro. This will make it easier to support different fixup variants in
      subsequent patches without needing to update all users of
      `_ASM_EXTABLE()`, and makes it easier to see tha the CPP and GAS
      variants of the macros are structurally identical.
    
      For the CPP macro, the stringification of fields is left to the
      wrapper macro, `_ASM_EXTABLE()`, as in subsequent patches it will be
      necessary to stringify fields in wrapper macros to safely concatenate
      strings which cannot be token-pasted together in CPP.
    
    * The fields of the structure are created separately on their own lines.
      This will make it easier to add/remove/modify individual fields
      clearly.
    
    * Additional parentheses are added around the use of macro arguments in
      field definitions to avoid any potential problems with evaluation due
      to operator precedence, and to make errors upon misuse clearer.
    
    * USER() is moved into <asm/asm-uaccess.h>, as it is not required by all
      assembly code, and is already refered to by comments in that file.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20211019160219.5202-8-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    819771cc
assembler.h 18.8 KB