Fix ALIGN_DOWN() macro on 64bit.
When the align parameter was a 32bit value (like all default integer literals), and the to-be-aligned value is a pointer the upper 32bit got corrupted because the value was casted down to 32bit. Note: This hasnt been a problem because apparently the sim always gets 32bit addresses (I found this when compiling Rockbox as a library). Change-Id: I0d2d3fd8bfa210326b27162bb22c059da97d207a
This commit is contained in:
parent
3136465c42
commit
9cb9f763a9
1 changed files with 1 additions and 1 deletions
|
@ -114,7 +114,7 @@ int get_cpu_boost_counter(void);
|
|||
#define ALIGN_UP_P2(n, p2) ALIGN_DOWN_P2((n) + P2_M1(p2),p2)
|
||||
|
||||
/* align up or down to nearest integer multiple of a */
|
||||
#define ALIGN_DOWN(n, a) ((typeof(n))((typeof(a))(n)/(a)*(a)))
|
||||
#define ALIGN_DOWN(n, a) ((typeof(n))((uintptr_t)(n)/(a)*(a)))
|
||||
#define ALIGN_UP(n, a) ALIGN_DOWN((n)+((a)-1),a)
|
||||
|
||||
/* align start and end of buffer to nearest integer multiple of a */
|
||||
|
|
Loading…
Reference in a new issue