lkml.org 
[lkml]   [2012]   [Jul]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [07/36] AArch64: Assembly macros and definitions
Hi Catalin,

On 01/-10/-28163 02:59 PM, Catalin Marinas wrote:
> This patch introduces several assembly macros and definitions used in
> the .S files across arch/aarch64/ like IRQ disabling/enabling, together
> with asm-offsets.c.

[...]

> diff --git a/arch/aarch64/include/asm/assembler.h b/arch/aarch64/include/asm/assembler.h
> new file mode 100644
> index 0000000..c6ac3cf
> --- /dev/null
> +++ b/arch/aarch64/include/asm/assembler.h

[...]

> +#define USER(x...) \
> +9999: x; \
> + .section __ex_table,"a"; \
> + .align 3; \
> + .quad 9999b,9001f; \
> + .previous

It appears that this macro depends on a 9001 label being defined in the
source file somewhere after the macro is used. It might be preferable to
incorporate the label into the macro if possible, or pass the label as
an argument to the macro.

> +
> +/*
> + * User access macros.
> + */
> + .macro usracc, instr, reg, reg2, ptr, inc, rept, abort
> + .rept \rept
> +9999:
> + .if \inc == 1
> + \instr\()b \reg, [\ptr], #\inc
> + .elseif \inc == 4
> + \instr\() \reg, [\ptr], #\inc
> + .elseif \inc == 8
> + \instr\() \reg, [\ptr], #\inc
> + .elseif \inc == 16
> + \instr\() \reg, \reg2, [\ptr], #\inc
> + .else
> + .error "Unsupported inc macro argument"
> + .endif
> +
> + .section __ex_table,"a"
> + .align 3
> + .quad 9999b, \abort
> + .previous

Could you use the USER preprocessor macro here to reduce this small
duplication of directives?

> + .endr
> + .endm
> +
> + .macro ldrusr, reg, ptr, inc, rept=1, abort=9001f
> + usracc ldr, \reg, \reg, \ptr, \inc, \rept, \abort
> + .endm
> +
> + .macro ldrpusr, reg, reg2, ptr, rept=1, abort=9001f
> + usracc ldp, \reg, \reg2, \ptr, 16, \rept, \abort
> + .endm

How about "ldpusr" to more directly match the assembly?

(Also, the 9001 label strikes again.)

> +
> +/*
> + * Register aliases.
> + */
> +lr .req x30 // link register

Regards,
Christopher

--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum


\
 
 \ /
  Last update: 2012-07-20 17:01    [W:0.553 / U:0.156 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site