sim: common: add align_{up,down} to match gdb
authorMike Frysinger <vapier@gentoo.org>
Tue, 23 Jun 2015 16:32:47 +0000 (22:17 +0545)
committerMike Frysinger <vapier@gentoo.org>
Sun, 3 Jan 2021 01:55:21 +0000 (20:55 -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
sim/bfin/interp.c
sim/bfin/sim-main.h
sim/common/ChangeLog
sim/common/sim-bits.h

index 18f2873231263cd9319e88a0d16793dea685f031..d82bc5ee742ac911ab0778b2a06d5153ba5143ed 100644 (file)
@@ -1,3 +1,8 @@
+2021-01-02  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.
index 5b05aa5f2be9dd5acecc2ef2d6c5e38991108f80..e26a8221b20a220be2ddf40e1b327cf221d335f4 100644 (file)
@@ -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) \
index 0b61ed64b9d37216dc063e94bb4ca93d84c8b4f0..a09ea4961898f64148ac63df66bb56a3f96d285a 100644 (file)
@@ -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) \
index 2c71b135904282ed9190c0f6dcdde38ad0523495..0545493f5718d9f1236487388a26566c169c5e7c 100644 (file)
@@ -1,3 +1,9 @@
+2021-01-02  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.
index f02dd8c6047efb09c0a2761e5d992203def2dafc..f8c2563e5bd163613f8735f7254c385088c97ba9 100644 (file)
    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 */