* [PATCH] sim: common: add align_{up,down} to match gdb
@ 2020-12-09 6:45 Mike Frysinger via Gdb-patches
2020-12-09 10:53 ` Andrew Burgess
0 siblings, 1 reply; 2+ messages in thread
From: Mike Frysinger via Gdb-patches @ 2020-12-09 6:45 UTC (permalink / raw)
To: gdb-patches
We have ALIGN_{8,16,PAGE} and FLOOR_PAGE macros (where PAGE is defined as
4k) which were imported from the ppc sim. But no other sim utilizes these
and hardcoding the sizes in the name is a bit limiting.
Let's delete these and import the two general macros that gdb uses:
align_up(addr, bytes)
align_down(addr, bytes)
This in turn allows us to cut over the Blackfin code immediately.
---
sim/bfin/ChangeLog | 5 +++++
sim/bfin/interp.c | 7 ++++---
sim/bfin/sim-main.h | 2 --
sim/common/ChangeLog | 6 ++++++
sim/common/sim-bits.h | 17 ++++-------------
5 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog
index 18f287323126..2384009cab80 100644
--- a/sim/bfin/ChangeLog
+++ b/sim/bfin/ChangeLog
@@ -1,3 +1,8 @@
+2020-12-09 Mike Frysinger <vapier@gentoo.org>
+
+ * interp.c: Change ALIGN to align_up.
+ * sim-main.h (ALIGN): Delete
+
2020-08-21 Simon Marchi <simon.marchi@polymtl.ca>
* configure.ac: Include config/pkg.m4.
diff --git a/sim/bfin/interp.c b/sim/bfin/interp.c
index d884d1025c55..60ed6d73c393 100644
--- a/sim/bfin/interp.c
+++ b/sim/bfin/interp.c
@@ -289,7 +289,7 @@ bfin_syscall (SIM_CPU *cpu)
sc.result = heap;
heap += sc.arg2;
/* Keep it page aligned. */
- heap = ALIGN (heap, 4096);
+ heap = align_up (heap, 4096);
break;
}
@@ -948,7 +948,8 @@ bfin_fdpic_load (SIM_DESC sd, SIM_CPU *cpu, struct bfd *abfd, bu32 *sp,
}
/* Update the load offset with a few extra pages. */
- fdpic_load_offset = ALIGN (max (max_load_addr, fdpic_load_offset), 0x10000);
+ fdpic_load_offset = align_up (max (max_load_addr, fdpic_load_offset),
+ 0x10000);
fdpic_load_offset += 0x10000;
/* Push the summary loadmap info onto the stack last. */
@@ -1074,7 +1075,7 @@ bfin_user_init (SIM_DESC sd, SIM_CPU *cpu, struct bfd *abfd,
env_flat += strlen (env[i]);
/* Push the Auxiliary Vector Table between argv/env and actual strings. */
- sp_flat = sp = ALIGN (SPREG - argv_flat - env_flat - 4, 4);
+ sp_flat = sp = align_up (SPREG - argv_flat - env_flat - 4, 4);
if (auxvt)
{
# define AT_PUSH(at, val) \
diff --git a/sim/bfin/sim-main.h b/sim/bfin/sim-main.h
index e9fe76ed2c28..ed3ac80929de 100644
--- a/sim/bfin/sim-main.h
+++ b/sim/bfin/sim-main.h
@@ -53,9 +53,7 @@ struct sim_state {
#include "dv-bfin_trace.h"
#undef CLAMP
-#undef ALIGN
#define CLAMP(a, b, c) min (max (a, b), c)
-#define ALIGN(addr, size) (((addr) + ((size)-1)) & ~((size)-1))
/* TODO: Move all this trace logic to the common code. */
#define BFIN_TRACE_CORE(cpu, addr, size, map, val) \
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 2c71b1359042..98649924809e 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,9 @@
+2020-12-09 Mike Frysinger <vapier@gentoo.org>
+
+ * sim-bits.h (_ALIGNa, _FLOORa, ALIGN_8, ALIGN_16, ALIGN_PAGE,
+ FLOOR_PAGE): Delete unused macros.
+ (align_up, align_down): Define.
+
2020-08-10 Tom de Vries <tdevries@suse.de>
* sim-cpu.c: Include stdlib.h for free.
diff --git a/sim/common/sim-bits.h b/sim/common/sim-bits.h
index 4b9de3796359..43f459cf8f4b 100644
--- a/sim/common/sim-bits.h
+++ b/sim/common/sim-bits.h
@@ -92,11 +92,8 @@
EXTEND*(VALUE): Convert the `*' bit value to the targets natural
word size. Sign extend the value if needed.
- ALIGN_*(VALUE): Round the value upwards so that it is aligned to a
- `_*' byte boundary.
-
- FLOOR_*(VALUE): Truncate the value so that it is aligned to a `_*'
- byte boundary.
+ align_*(VALUE, BYTES): Round the value so that it is aligned to a
+ BYTES boundary.
ROT*(VALUE, NR_BITS): Return the `*' bit VALUE rotated by NR_BITS
right (positive) or left (negative).
@@ -525,14 +522,8 @@ INLINE_SIM_BITS(unsigned_word) MSINSERTED (unsigned_word val, int start, int sto
/* memory alignment macro's */
-#define _ALIGNa(A,X) (((X) + ((A) - 1)) & ~((A) - 1))
-#define _FLOORa(A,X) ((X) & ~((A) - 1))
-
-#define ALIGN_8(X) _ALIGNa (8, X)
-#define ALIGN_16(X) _ALIGNa (16, X)
-
-#define ALIGN_PAGE(X) _ALIGNa (0x1000, X)
-#define FLOOR_PAGE(X) ((X) & ~(0x1000 - 1))
+#define align_up(v, n) (((v) + (n) - 1) & -(n))
+#define align_down(v, n) ((v) & -(n))
/* bit bliting macro's */
--
2.28.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] sim: common: add align_{up,down} to match gdb
2020-12-09 6:45 [PATCH] sim: common: add align_{up,down} to match gdb Mike Frysinger via Gdb-patches
@ 2020-12-09 10:53 ` Andrew Burgess
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Burgess @ 2020-12-09 10:53 UTC (permalink / raw)
To: Mike Frysinger; +Cc: gdb-patches
* Mike Frysinger via Gdb-patches <gdb-patches@sourceware.org> [2020-12-09 01:45:28 -0500]:
> We have ALIGN_{8,16,PAGE} and FLOOR_PAGE macros (where PAGE is defined as
> 4k) which were imported from the ppc sim. But no other sim utilizes these
> and hardcoding the sizes in the name is a bit limiting.
>
> Let's delete these and import the two general macros that gdb uses:
> align_up(addr, bytes)
> align_down(addr, bytes)
>
> This in turn allows us to cut over the Blackfin code immediately.
> ---
> sim/bfin/ChangeLog | 5 +++++
> sim/bfin/interp.c | 7 ++++---
> sim/bfin/sim-main.h | 2 --
> sim/common/ChangeLog | 6 ++++++
> sim/common/sim-bits.h | 17 ++++-------------
> 5 files changed, 19 insertions(+), 18 deletions(-)
>
> diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog
> index 18f287323126..2384009cab80 100644
> --- a/sim/bfin/ChangeLog
> +++ b/sim/bfin/ChangeLog
> @@ -1,3 +1,8 @@
> +2020-12-09 Mike Frysinger <vapier@gentoo.org>
> +
> + * interp.c: Change ALIGN to align_up.
> + * sim-main.h (ALIGN): Delete
LGTM.
Thanks,
Andrew
> +
> 2020-08-21 Simon Marchi <simon.marchi@polymtl.ca>
>
> * configure.ac: Include config/pkg.m4.
> diff --git a/sim/bfin/interp.c b/sim/bfin/interp.c
> index d884d1025c55..60ed6d73c393 100644
> --- a/sim/bfin/interp.c
> +++ b/sim/bfin/interp.c
> @@ -289,7 +289,7 @@ bfin_syscall (SIM_CPU *cpu)
> sc.result = heap;
> heap += sc.arg2;
> /* Keep it page aligned. */
> - heap = ALIGN (heap, 4096);
> + heap = align_up (heap, 4096);
>
> break;
> }
> @@ -948,7 +948,8 @@ bfin_fdpic_load (SIM_DESC sd, SIM_CPU *cpu, struct bfd *abfd, bu32 *sp,
> }
>
> /* Update the load offset with a few extra pages. */
> - fdpic_load_offset = ALIGN (max (max_load_addr, fdpic_load_offset), 0x10000);
> + fdpic_load_offset = align_up (max (max_load_addr, fdpic_load_offset),
> + 0x10000);
> fdpic_load_offset += 0x10000;
>
> /* Push the summary loadmap info onto the stack last. */
> @@ -1074,7 +1075,7 @@ bfin_user_init (SIM_DESC sd, SIM_CPU *cpu, struct bfd *abfd,
> env_flat += strlen (env[i]);
>
> /* Push the Auxiliary Vector Table between argv/env and actual strings. */
> - sp_flat = sp = ALIGN (SPREG - argv_flat - env_flat - 4, 4);
> + sp_flat = sp = align_up (SPREG - argv_flat - env_flat - 4, 4);
> if (auxvt)
> {
> # define AT_PUSH(at, val) \
> diff --git a/sim/bfin/sim-main.h b/sim/bfin/sim-main.h
> index e9fe76ed2c28..ed3ac80929de 100644
> --- a/sim/bfin/sim-main.h
> +++ b/sim/bfin/sim-main.h
> @@ -53,9 +53,7 @@ struct sim_state {
> #include "dv-bfin_trace.h"
>
> #undef CLAMP
> -#undef ALIGN
> #define CLAMP(a, b, c) min (max (a, b), c)
> -#define ALIGN(addr, size) (((addr) + ((size)-1)) & ~((size)-1))
>
> /* TODO: Move all this trace logic to the common code. */
> #define BFIN_TRACE_CORE(cpu, addr, size, map, val) \
> diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
> index 2c71b1359042..98649924809e 100644
> --- a/sim/common/ChangeLog
> +++ b/sim/common/ChangeLog
> @@ -1,3 +1,9 @@
> +2020-12-09 Mike Frysinger <vapier@gentoo.org>
> +
> + * sim-bits.h (_ALIGNa, _FLOORa, ALIGN_8, ALIGN_16, ALIGN_PAGE,
> + FLOOR_PAGE): Delete unused macros.
> + (align_up, align_down): Define.
> +
> 2020-08-10 Tom de Vries <tdevries@suse.de>
>
> * sim-cpu.c: Include stdlib.h for free.
> diff --git a/sim/common/sim-bits.h b/sim/common/sim-bits.h
> index 4b9de3796359..43f459cf8f4b 100644
> --- a/sim/common/sim-bits.h
> +++ b/sim/common/sim-bits.h
> @@ -92,11 +92,8 @@
> EXTEND*(VALUE): Convert the `*' bit value to the targets natural
> word size. Sign extend the value if needed.
>
> - ALIGN_*(VALUE): Round the value upwards so that it is aligned to a
> - `_*' byte boundary.
> -
> - FLOOR_*(VALUE): Truncate the value so that it is aligned to a `_*'
> - byte boundary.
> + align_*(VALUE, BYTES): Round the value so that it is aligned to a
> + BYTES boundary.
>
> ROT*(VALUE, NR_BITS): Return the `*' bit VALUE rotated by NR_BITS
> right (positive) or left (negative).
> @@ -525,14 +522,8 @@ INLINE_SIM_BITS(unsigned_word) MSINSERTED (unsigned_word val, int start, int sto
>
>
> /* memory alignment macro's */
> -#define _ALIGNa(A,X) (((X) + ((A) - 1)) & ~((A) - 1))
> -#define _FLOORa(A,X) ((X) & ~((A) - 1))
> -
> -#define ALIGN_8(X) _ALIGNa (8, X)
> -#define ALIGN_16(X) _ALIGNa (16, X)
> -
> -#define ALIGN_PAGE(X) _ALIGNa (0x1000, X)
> -#define FLOOR_PAGE(X) ((X) & ~(0x1000 - 1))
> +#define align_up(v, n) (((v) + (n) - 1) & -(n))
> +#define align_down(v, n) ((v) & -(n))
>
>
> /* bit bliting macro's */
> --
> 2.28.0
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-12-09 10:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-09 6:45 [PATCH] sim: common: add align_{up,down} to match gdb Mike Frysinger via Gdb-patches
2020-12-09 10:53 ` Andrew Burgess
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox