public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
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
> 

  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