From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 03/10] arm64: esr.h type fixes and cleanup
Date: Tue, 14 Jul 2015 16:54:46 +0100 [thread overview]
Message-ID: <20150714155446.GE12675@leverpostej> (raw)
In-Reply-To: <1436793967-7138-4-git-send-email-Dave.Martin@arm.com>
On Mon, Jul 13, 2015 at 02:25:50PM +0100, Dave P Martin wrote:
> ESR_ELx is a 32-bit register, so it is not necessary for all the
> template values defined by esr.h to be forced to 64-bit (long).
While it's potentially misleading, does forcing these to be 64-bit cause
a real issue? If so, it would be good to mention in the commit message.
Mark.
> This patch introduces a UINT() macro analogous to UL(), and applies
> it consistently. (Unfortunately, the more succinct U and UI names
> are already used in unrelated code, and cause conflicts since
> memory.h is widely included.)
>
> Since this change touches many lines already, I've taken the
> opportunity to squash some redundant parentheses and bogus
> whitespace at the same time.
>
> The missing include of <asm/memory.h> (for UL(), UINT() etc.) is
> also added.
>
> No functional change.
>
> Signed-off-by: Dave Martin <Dave.Martin@arm.com>
> ---
> arch/arm64/include/asm/esr.h | 128 ++++++++++++++++++++-------------------
> arch/arm64/include/asm/memory.h | 3 +-
> 2 files changed, 67 insertions(+), 64 deletions(-)
>
> diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h
> index 7052245..8dab2a9 100644
> --- a/arch/arm64/include/asm/esr.h
> +++ b/arch/arm64/include/asm/esr.h
> @@ -18,86 +18,88 @@
> #ifndef __ASM_ESR_H
> #define __ASM_ESR_H
>
> -#define ESR_ELx_EC_UNKNOWN (0x00)
> -#define ESR_ELx_EC_WFx (0x01)
> +#include <asm/memory.h>
> +
> +#define ESR_ELx_EC_UNKNOWN UINT(0x00)
> +#define ESR_ELx_EC_WFx UINT(0x01)
> /* Unallocated EC: 0x02 */
> -#define ESR_ELx_EC_CP15_32 (0x03)
> -#define ESR_ELx_EC_CP15_64 (0x04)
> -#define ESR_ELx_EC_CP14_MR (0x05)
> -#define ESR_ELx_EC_CP14_LS (0x06)
> -#define ESR_ELx_EC_FP_ASIMD (0x07)
> -#define ESR_ELx_EC_CP10_ID (0x08)
> +#define ESR_ELx_EC_CP15_32 UINT(0x03)
> +#define ESR_ELx_EC_CP15_64 UINT(0x04)
> +#define ESR_ELx_EC_CP14_MR UINT(0x05)
> +#define ESR_ELx_EC_CP14_LS UINT(0x06)
> +#define ESR_ELx_EC_FP_ASIMD UINT(0x07)
> +#define ESR_ELx_EC_CP10_ID UINT(0x08)
> /* Unallocated EC: 0x09 - 0x0B */
> -#define ESR_ELx_EC_CP14_64 (0x0C)
> +#define ESR_ELx_EC_CP14_64 UINT(0x0C)
> /* Unallocated EC: 0x0d */
> -#define ESR_ELx_EC_ILL (0x0E)
> +#define ESR_ELx_EC_ILL UINT(0x0E)
> /* Unallocated EC: 0x0F - 0x10 */
> -#define ESR_ELx_EC_SVC32 (0x11)
> -#define ESR_ELx_EC_HVC32 (0x12)
> -#define ESR_ELx_EC_SMC32 (0x13)
> +#define ESR_ELx_EC_SVC32 UINT(0x11)
> +#define ESR_ELx_EC_HVC32 UINT(0x12)
> +#define ESR_ELx_EC_SMC32 UINT(0x13)
> /* Unallocated EC: 0x14 */
> -#define ESR_ELx_EC_SVC64 (0x15)
> -#define ESR_ELx_EC_HVC64 (0x16)
> -#define ESR_ELx_EC_SMC64 (0x17)
> -#define ESR_ELx_EC_SYS64 (0x18)
> +#define ESR_ELx_EC_SVC64 UINT(0x15)
> +#define ESR_ELx_EC_HVC64 UINT(0x16)
> +#define ESR_ELx_EC_SMC64 UINT(0x17)
> +#define ESR_ELx_EC_SYS64 UINT(0x18)
> /* Unallocated EC: 0x19 - 0x1E */
> -#define ESR_ELx_EC_IMP_DEF (0x1f)
> -#define ESR_ELx_EC_IABT_LOW (0x20)
> -#define ESR_ELx_EC_IABT_CUR (0x21)
> -#define ESR_ELx_EC_PC_ALIGN (0x22)
> +#define ESR_ELx_EC_IMP_DEF UINT(0x1f)
> +#define ESR_ELx_EC_IABT_LOW UINT(0x20)
> +#define ESR_ELx_EC_IABT_CUR UINT(0x21)
> +#define ESR_ELx_EC_PC_ALIGN UINT(0x22)
> /* Unallocated EC: 0x23 */
> -#define ESR_ELx_EC_DABT_LOW (0x24)
> -#define ESR_ELx_EC_DABT_CUR (0x25)
> -#define ESR_ELx_EC_SP_ALIGN (0x26)
> +#define ESR_ELx_EC_DABT_LOW UINT(0x24)
> +#define ESR_ELx_EC_DABT_CUR UINT(0x25)
> +#define ESR_ELx_EC_SP_ALIGN UINT(0x26)
> /* Unallocated EC: 0x27 */
> -#define ESR_ELx_EC_FP_EXC32 (0x28)
> +#define ESR_ELx_EC_FP_EXC32 UINT(0x28)
> /* Unallocated EC: 0x29 - 0x2B */
> -#define ESR_ELx_EC_FP_EXC64 (0x2C)
> +#define ESR_ELx_EC_FP_EXC64 UINT(0x2C)
> /* Unallocated EC: 0x2D - 0x2E */
> -#define ESR_ELx_EC_SERROR (0x2F)
> -#define ESR_ELx_EC_BREAKPT_LOW (0x30)
> -#define ESR_ELx_EC_BREAKPT_CUR (0x31)
> -#define ESR_ELx_EC_SOFTSTP_LOW (0x32)
> -#define ESR_ELx_EC_SOFTSTP_CUR (0x33)
> -#define ESR_ELx_EC_WATCHPT_LOW (0x34)
> -#define ESR_ELx_EC_WATCHPT_CUR (0x35)
> +#define ESR_ELx_EC_SERROR UINT(0x2F)
> +#define ESR_ELx_EC_BREAKPT_LOW UINT(0x30)
> +#define ESR_ELx_EC_BREAKPT_CUR UINT(0x31)
> +#define ESR_ELx_EC_SOFTSTP_LOW UINT(0x32)
> +#define ESR_ELx_EC_SOFTSTP_CUR UINT(0x33)
> +#define ESR_ELx_EC_WATCHPT_LOW UINT(0x34)
> +#define ESR_ELx_EC_WATCHPT_CUR UINT(0x35)
> /* Unallocated EC: 0x36 - 0x37 */
> -#define ESR_ELx_EC_BKPT32 (0x38)
> +#define ESR_ELx_EC_BKPT32 UINT(0x38)
> /* Unallocated EC: 0x39 */
> -#define ESR_ELx_EC_VECTOR32 (0x3A)
> +#define ESR_ELx_EC_VECTOR32 UINT(0x3A)
> /* Unallocted EC: 0x3B */
> -#define ESR_ELx_EC_BRK64 (0x3C)
> +#define ESR_ELx_EC_BRK64 UINT(0x3C)
> /* Unallocated EC: 0x3D - 0x3F */
> -#define ESR_ELx_EC_MAX (0x3F)
> +#define ESR_ELx_EC_MAX UINT(0x3F)
>
> -#define ESR_ELx_EC_SHIFT (26)
> -#define ESR_ELx_EC_MASK (UL(0x3F) << ESR_ELx_EC_SHIFT)
> +#define ESR_ELx_EC_SHIFT 26
> +#define ESR_ELx_EC_MASK (ESR_ELx_EC_MAX << ESR_ELx_EC_SHIFT)
>
> -#define ESR_ELx_IL (UL(1) << 25)
> +#define ESR_ELx_IL (UINT(1) << 25)
> #define ESR_ELx_ISS_MASK (ESR_ELx_IL - 1)
> -#define ESR_ELx_ISV (UL(1) << 24)
> -#define ESR_ELx_SAS_SHIFT (22)
> -#define ESR_ELx_SAS (UL(3) << ESR_ELx_SAS_SHIFT)
> -#define ESR_ELx_SSE (UL(1) << 21)
> -#define ESR_ELx_SRT_SHIFT (16)
> -#define ESR_ELx_SRT_MASK (UL(0x1F) << ESR_ELx_SRT_SHIFT)
> -#define ESR_ELx_SF (UL(1) << 15)
> -#define ESR_ELx_AR (UL(1) << 14)
> -#define ESR_ELx_EA (UL(1) << 9)
> -#define ESR_ELx_CM (UL(1) << 8)
> -#define ESR_ELx_S1PTW (UL(1) << 7)
> -#define ESR_ELx_WNR (UL(1) << 6)
> -#define ESR_ELx_FSC (0x3F)
> -#define ESR_ELx_FSC_TYPE (0x3C)
> -#define ESR_ELx_FSC_EXTABT (0x10)
> -#define ESR_ELx_FSC_ACCESS (0x08)
> -#define ESR_ELx_FSC_FAULT (0x04)
> -#define ESR_ELx_FSC_PERM (0x0C)
> -#define ESR_ELx_CV (UL(1) << 24)
> -#define ESR_ELx_COND_SHIFT (20)
> -#define ESR_ELx_COND_MASK (UL(0xF) << ESR_ELx_COND_SHIFT)
> -#define ESR_ELx_WFx_ISS_WFE (UL(1) << 0)
> -#define ESR_ELx_xVC_IMM_MASK ((1UL << 16) - 1)
> +#define ESR_ELx_ISV (UINT(1) << 24)
> +#define ESR_ELx_SAS_SHIFT 22
> +#define ESR_ELx_SAS (UINT(3) << ESR_ELx_SAS_SHIFT)
> +#define ESR_ELx_SSE (UINT(1) << 21)
> +#define ESR_ELx_SRT_SHIFT 16
> +#define ESR_ELx_SRT_MASK (UINT(0x1F) << ESR_ELx_SRT_SHIFT)
> +#define ESR_ELx_SF (UINT(1) << 15)
> +#define ESR_ELx_AR (UINT(1) << 14)
> +#define ESR_ELx_EA (UINT(1) << 9)
> +#define ESR_ELx_CM (UINT(1) << 8)
> +#define ESR_ELx_S1PTW (UINT(1) << 7)
> +#define ESR_ELx_WNR (UINT(1) << 6)
> +#define ESR_ELx_FSC UINT(0x3F)
> +#define ESR_ELx_FSC_TYPE UINT(0x3C)
> +#define ESR_ELx_FSC_EXTABT UINT(0x10)
> +#define ESR_ELx_FSC_ACCESS UINT(0x08)
> +#define ESR_ELx_FSC_FAULT UINT(0x04)
> +#define ESR_ELx_FSC_PERM UINT(0x0C)
> +#define ESR_ELx_CV (UINT(1) << 24)
> +#define ESR_ELx_COND_SHIFT 20
> +#define ESR_ELx_COND_MASK (UINT(0xF) << ESR_ELx_COND_SHIFT)
> +#define ESR_ELx_WFx_ISS_WFE (UINT(1) << 0)
> +#define ESR_ELx_xVC_IMM_MASK ((UINT(1) << 16) - 1)
>
> #ifndef __ASSEMBLY__
> #include <asm/types.h>
> diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
> index f800d45..c6a6592a 100644
> --- a/arch/arm64/include/asm/memory.h
> +++ b/arch/arm64/include/asm/memory.h
> @@ -28,9 +28,10 @@
>
> /*
> * Allow for constants defined here to be used from assembly code
> - * by prepending the UL suffix only with actual C code compilation.
> + * by prepending type suffixes only with actual C code compilation.
> */
> #define UL(x) _AC(x, UL)
> +#define UINT(x) _AC(x, U)
>
> /*
> * Size of the PCI I/O space. This must remain a power of two so that
> --
> 1.7.10.4
>
next prev parent reply other threads:[~2015-07-14 15:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-13 13:25 [PATCH v2 00/10] arm64: Use BRK instruction for generic BUG traps Dave Martin
2015-07-13 13:25 ` [PATCH v2 01/10] arm64/debug: Eliminate magic number for size of BRK instruction Dave Martin
2015-07-13 14:47 ` Mark Rutland
2015-07-13 13:25 ` [PATCH v2 02/10] arm64/debug: Mask off all reserved bits from generated ESR values Dave Martin
2015-07-13 14:14 ` Mark Rutland
2015-07-13 14:22 ` Dave Martin
2015-07-13 13:25 ` [PATCH v2 03/10] arm64: esr.h type fixes and cleanup Dave Martin
2015-07-14 15:54 ` Mark Rutland [this message]
2015-07-14 16:53 ` Dave Martin
2015-07-13 13:25 ` [PATCH v2 04/10] arm64/debug: Eliminate magic number from ESR template definition Dave Martin
2015-07-13 14:16 ` Mark Rutland
2015-07-13 13:25 ` [PATCH v2 05/10] arm64/debug: More consistent naming for the BRK ESR template macro Dave Martin
2015-07-13 14:19 ` Mark Rutland
2015-07-13 13:25 ` [PATCH v2 06/10] arm64/debug: Move BRK ESR template macro into <asm/esr.h> Dave Martin
2015-07-13 14:18 ` Mark Rutland
2015-07-13 13:25 ` [PATCH v2 07/10] arm64/debug: Simplify BRK insn opcode declarations Dave Martin
2015-07-13 14:38 ` Mark Rutland
2015-07-13 13:25 ` [PATCH v2 08/10] arm64/debug: Add missing #include Dave Martin
2015-07-13 14:34 ` Mark Rutland
2015-07-13 14:44 ` Dave Martin
2015-07-13 14:45 ` Mark Rutland
2015-07-13 13:25 ` [PATCH v2 09/10] arm64/BUG: Use BRK instruction for generic BUG traps Dave Martin
2015-07-13 16:43 ` Mark Rutland
2015-07-13 16:51 ` Dave Martin
2015-07-13 16:56 ` Mark Rutland
2015-07-13 17:05 ` Dave P Martin
2015-07-14 10:20 ` Dave Martin
2015-07-14 11:09 ` Mark Rutland
2015-07-14 11:34 ` Dave Martin
2015-07-14 15:51 ` Mark Rutland
2015-07-14 16:53 ` Dave Martin
2015-07-14 16:11 ` Catalin Marinas
2015-07-14 16:55 ` Dave Martin
2015-07-13 13:25 ` [PATCH v2 10/10] arm64/BUG: Show explicit backtrace for WARNs Dave Martin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150714155446.GE12675@leverpostej \
--to=mark.rutland@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox