[PATCH 1/6] Update MEM_SUPPORT_64BIT_DATA to be always defined
Stefan Roese
sr at denx.de
Wed Jun 3 07:56:16 CEST 2020
On 03.06.20 03:26, Simon Glass wrote:
> Define this macro always so we don't need the preprocessor to check it.
> Convert the users to #if instead of #ifdef.
>
> Note that '#if MEM_SUPPORT_64BIT_DATA' does not give an error if the
> macro is not define. It just assumes zero.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> ---
>
> cmd/mem.c | 54 +++++++++++++++++++++----------------------
> common/command.c | 2 +-
> include/compiler.h | 4 +++-
> lib/display_options.c | 6 ++---
> 4 files changed, 34 insertions(+), 32 deletions(-)
>
> diff --git a/cmd/mem.c b/cmd/mem.c
> index 9b97f7bf69..fe43427d3c 100644
> --- a/cmd/mem.c
> +++ b/cmd/mem.c
> @@ -116,7 +116,7 @@ static int do_mem_nm(struct cmd_tbl *cmdtp, int flag, int argc,
> static int do_mem_mw(struct cmd_tbl *cmdtp, int flag, int argc,
> char *const argv[])
> {
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> u64 writeval;
> #else
> ulong writeval;
> @@ -141,7 +141,7 @@ static int do_mem_mw(struct cmd_tbl *cmdtp, int flag, int argc,
>
> /* Get the value to write.
> */
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> writeval = simple_strtoull(argv[2], NULL, 16);
> #else
> writeval = simple_strtoul(argv[2], NULL, 16);
> @@ -160,7 +160,7 @@ static int do_mem_mw(struct cmd_tbl *cmdtp, int flag, int argc,
> while (count-- > 0) {
> if (size == 4)
> *((u32 *)buf) = (u32)writeval;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> else if (size == 8)
> *((u64 *)buf) = (u64)writeval;
> #endif
> @@ -240,7 +240,7 @@ static int do_mem_cmp(struct cmd_tbl *cmdtp, int flag, int argc,
> int rcode = 0;
> const char *type;
> const void *buf1, *buf2, *base;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> u64 word1, word2;
> #else
> ulong word1, word2;
> @@ -272,7 +272,7 @@ static int do_mem_cmp(struct cmd_tbl *cmdtp, int flag, int argc,
> if (size == 4) {
> word1 = *(u32 *)buf1;
> word2 = *(u32 *)buf2;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> } else if (size == 8) {
> word1 = *(u64 *)buf1;
> word2 = *(u64 *)buf2;
> @@ -286,7 +286,7 @@ static int do_mem_cmp(struct cmd_tbl *cmdtp, int flag, int argc,
> }
> if (word1 != word2) {
> ulong offset = buf1 - base;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> printf("%s at 0x%p (%#0*llx) != %s at 0x%p (%#0*llx)\n",
> type, (void *)(addr1 + offset), size, word1,
> type, (void *)(addr2 + offset), size, word2);
> @@ -391,7 +391,7 @@ static int do_mem_loop(struct cmd_tbl *cmdtp, int flag, int argc,
> {
> ulong addr, length, i, bytes;
> int size;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> volatile u64 *llp;
> #endif
> volatile u32 *longp;
> @@ -424,7 +424,7 @@ static int do_mem_loop(struct cmd_tbl *cmdtp, int flag, int argc,
> * If we have only one object, just run infinite loops.
> */
> if (length == 1) {
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> if (size == 8) {
> llp = (u64 *)buf;
> for (;;)
> @@ -446,7 +446,7 @@ static int do_mem_loop(struct cmd_tbl *cmdtp, int flag, int argc,
> i = *cp;
> }
>
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> if (size == 8) {
> for (;;) {
> llp = (u64 *)buf;
> @@ -489,7 +489,7 @@ static int do_mem_loopw(struct cmd_tbl *cmdtp, int flag, int argc,
> {
> ulong addr, length, i, bytes;
> int size;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> volatile u64 *llp;
> u64 data;
> #else
> @@ -519,7 +519,7 @@ static int do_mem_loopw(struct cmd_tbl *cmdtp, int flag, int argc,
> length = simple_strtoul(argv[2], NULL, 16);
>
> /* data to write */
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> data = simple_strtoull(argv[3], NULL, 16);
> #else
> data = simple_strtoul(argv[3], NULL, 16);
> @@ -532,7 +532,7 @@ static int do_mem_loopw(struct cmd_tbl *cmdtp, int flag, int argc,
> * If we have only one object, just run infinite loops.
> */
> if (length == 1) {
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> if (size == 8) {
> llp = (u64 *)buf;
> for (;;)
> @@ -554,7 +554,7 @@ static int do_mem_loopw(struct cmd_tbl *cmdtp, int flag, int argc,
> *cp = data;
> }
>
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> if (size == 8) {
> for (;;) {
> llp = (u64 *)buf;
> @@ -1023,7 +1023,7 @@ mod_mem(struct cmd_tbl *cmdtp, int incrflag, int flag, int argc,
> char *const argv[])
> {
> ulong addr;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> u64 i;
> #else
> ulong i;
> @@ -1062,7 +1062,7 @@ mod_mem(struct cmd_tbl *cmdtp, int incrflag, int flag, int argc,
> printf("%08lx:", addr);
> if (size == 4)
> printf(" %08x", *((u32 *)ptr));
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> else if (size == 8)
> printf(" %016llx", *((u64 *)ptr));
> #endif
> @@ -1089,7 +1089,7 @@ mod_mem(struct cmd_tbl *cmdtp, int incrflag, int flag, int argc,
> #endif
> else {
> char *endp;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> i = simple_strtoull(console_buffer, &endp, 16);
> #else
> i = simple_strtoul(console_buffer, &endp, 16);
> @@ -1101,7 +1101,7 @@ mod_mem(struct cmd_tbl *cmdtp, int incrflag, int flag, int argc,
> bootretry_reset_cmd_timeout();
> if (size == 4)
> *((u32 *)ptr) = i;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> else if (size == 8)
> *((u64 *)ptr) = i;
> #endif
> @@ -1196,7 +1196,7 @@ static int do_random(struct cmd_tbl *cmdtp, int flag, int argc,
> U_BOOT_CMD(
> md, 3, 1, do_mem_md,
> "memory display",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address [# of objects]"
> #else
> "[.b, .w, .l] address [# of objects]"
> @@ -1207,7 +1207,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> mm, 2, 1, do_mem_mm,
> "memory modify (auto-incrementing address)",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address"
> #else
> "[.b, .w, .l] address"
> @@ -1218,7 +1218,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> nm, 2, 1, do_mem_nm,
> "memory modify (constant address)",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address"
> #else
> "[.b, .w, .l] address"
> @@ -1228,7 +1228,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> mw, 4, 1, do_mem_mw,
> "memory write (fill)",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address value [count]"
> #else
> "[.b, .w, .l] address value [count]"
> @@ -1238,7 +1238,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> cp, 4, 1, do_mem_cp,
> "memory copy",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] source target count"
> #else
> "[.b, .w, .l] source target count"
> @@ -1248,7 +1248,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> cmp, 4, 1, do_mem_cmp,
> "memory compare",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] addr1 addr2 count"
> #else
> "[.b, .w, .l] addr1 addr2 count"
> @@ -1299,7 +1299,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> loop, 3, 1, do_mem_loop,
> "infinite loop on address range",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address number_of_objects"
> #else
> "[.b, .w, .l] address number_of_objects"
> @@ -1310,7 +1310,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> loopw, 4, 1, do_mem_loopw,
> "infinite write loop on address range",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address number_of_objects data_to_write"
> #else
> "[.b, .w, .l] address number_of_objects data_to_write"
> @@ -1330,7 +1330,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> mdc, 4, 1, do_mem_mdc,
> "memory display cyclic",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address count delay(ms)"
> #else
> "[.b, .w, .l] address count delay(ms)"
> @@ -1340,7 +1340,7 @@ U_BOOT_CMD(
> U_BOOT_CMD(
> mwc, 4, 1, do_mem_mwc,
> "memory write cyclic",
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> "[.b, .w, .l, .q] address value delay(ms)"
> #else
> "[.b, .w, .l] address value delay(ms)"
> diff --git a/common/command.c b/common/command.c
> index 4f49f15bfd..fc37ed4d7c 100644
> --- a/common/command.c
> +++ b/common/command.c
> @@ -473,7 +473,7 @@ int cmd_get_data_size(char* arg, int default_size)
> return 2;
> case 'l':
> return 4;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> case 'q':
> return 8;
> #endif
> diff --git a/include/compiler.h b/include/compiler.h
> index ed74c272b8..90b7afae53 100644
> --- a/include/compiler.h
> +++ b/include/compiler.h
> @@ -145,7 +145,9 @@ typedef unsigned long int uintptr_t;
> #define unlikely(x) __builtin_expect(!!(x), 0)
>
> #ifdef __LP64__
> -#define MEM_SUPPORT_64BIT_DATA
> +#define MEM_SUPPORT_64BIT_DATA 1
> +#else
> +#define MEM_SUPPORT_64BIT_DATA 0
> #endif
>
> #endif
> diff --git a/lib/display_options.c b/lib/display_options.c
> index 74f769d9ff..dadfc60560 100644
> --- a/lib/display_options.c
> +++ b/lib/display_options.c
> @@ -137,7 +137,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
> {
> /* linebuf as a union causes proper alignment */
> union linebuf {
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> uint64_t uq[MAX_LINE_LENGTH_BYTES/sizeof(uint64_t) + 1];
> #endif
> uint32_t ui[MAX_LINE_LENGTH_BYTES/sizeof(uint32_t) + 1];
> @@ -145,7 +145,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
> uint8_t uc[MAX_LINE_LENGTH_BYTES/sizeof(uint8_t) + 1];
> } lb;
> int i;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> uint64_t __maybe_unused x;
> #else
> uint32_t __maybe_unused x;
> @@ -168,7 +168,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
> for (i = 0; i < thislinelen; i++) {
> if (width == 4)
> x = lb.ui[i] = *(volatile uint32_t *)data;
> -#ifdef MEM_SUPPORT_64BIT_DATA
> +#if MEM_SUPPORT_64BIT_DATA
> else if (width == 8)
> x = lb.uq[i] = *(volatile uint64_t *)data;
> #endif
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list