From: Wei Yang <richardw.yang@linux.intel.com>
Use ROUND_UP() to define, which is a little bit easy to read.
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
Message-Id: <20191013021145.16011-2-richardw.yang@linux.intel.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
include/exec/cpu-all.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index ad9ab85eb3..255bb186ac 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -220,7 +220,7 @@ extern int target_page_bits;
#define TARGET_PAGE_SIZE (1 << TARGET_PAGE_BITS)
#define TARGET_PAGE_MASK ~(TARGET_PAGE_SIZE - 1)
-#define TARGET_PAGE_ALIGN(addr) (((addr) + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK)
+#define TARGET_PAGE_ALIGN(addr) ROUND_UP((addr), TARGET_PAGE_SIZE)
/* Using intptr_t ensures that qemu_*_page_mask is sign-extended even
* when intptr_t is 32-bit and we are aligning a long long.
@@ -228,9 +228,8 @@ extern int target_page_bits;
extern uintptr_t qemu_host_page_size;
extern intptr_t qemu_host_page_mask;
-#define HOST_PAGE_ALIGN(addr) (((addr) + qemu_host_page_size - 1) & qemu_host_page_mask)
-#define REAL_HOST_PAGE_ALIGN(addr) (((addr) + qemu_real_host_page_size - 1) & \
- qemu_real_host_page_mask)
+#define HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_host_page_size)
+#define REAL_HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_real_host_page_size)
/* same as PROT_xxx */
#define PAGE_READ 0x0001
--
2.17.1
On 10/23/19 5:44 PM, Richard Henderson wrote: > From: Wei Yang <richardw.yang@linux.intel.com> > > Use ROUND_UP() to define, which is a little bit easy to read. > > Reviewed-by: Michael S. Tsirkin <mst@redhat.com> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> ^ one is enough ;) > Reviewed-by: Juan Quintela <quintela@redhat.com> > Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> > Message-Id: <20191013021145.16011-2-richardw.yang@linux.intel.com> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > include/exec/cpu-all.h | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h > index ad9ab85eb3..255bb186ac 100644 > --- a/include/exec/cpu-all.h > +++ b/include/exec/cpu-all.h > @@ -220,7 +220,7 @@ extern int target_page_bits; > > #define TARGET_PAGE_SIZE (1 << TARGET_PAGE_BITS) > #define TARGET_PAGE_MASK ~(TARGET_PAGE_SIZE - 1) > -#define TARGET_PAGE_ALIGN(addr) (((addr) + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK) > +#define TARGET_PAGE_ALIGN(addr) ROUND_UP((addr), TARGET_PAGE_SIZE) > > /* Using intptr_t ensures that qemu_*_page_mask is sign-extended even > * when intptr_t is 32-bit and we are aligning a long long. > @@ -228,9 +228,8 @@ extern int target_page_bits; > extern uintptr_t qemu_host_page_size; > extern intptr_t qemu_host_page_mask; > > -#define HOST_PAGE_ALIGN(addr) (((addr) + qemu_host_page_size - 1) & qemu_host_page_mask) > -#define REAL_HOST_PAGE_ALIGN(addr) (((addr) + qemu_real_host_page_size - 1) & \ > - qemu_real_host_page_mask) > +#define HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_host_page_size) > +#define REAL_HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_real_host_page_size) > > /* same as PROT_xxx */ > #define PAGE_READ 0x0001 >
On 24/10/19 13:52, Philippe Mathieu-Daudé wrote: >> diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h >> index ad9ab85eb3..255bb186ac 100644 >> --- a/include/exec/cpu-all.h >> +++ b/include/exec/cpu-all.h >> @@ -220,7 +220,7 @@ extern int target_page_bits; >> #define TARGET_PAGE_SIZE (1 << TARGET_PAGE_BITS) >> #define TARGET_PAGE_MASK ~(TARGET_PAGE_SIZE - 1) >> -#define TARGET_PAGE_ALIGN(addr) (((addr) + TARGET_PAGE_SIZE - 1) & >> TARGET_PAGE_MASK) >> +#define TARGET_PAGE_ALIGN(addr) ROUND_UP((addr), TARGET_PAGE_SIZE) >> /* Using intptr_t ensures that qemu_*_page_mask is sign-extended even >> * when intptr_t is 32-bit and we are aligning a long long. >> @@ -228,9 +228,8 @@ extern int target_page_bits; >> extern uintptr_t qemu_host_page_size; >> extern intptr_t qemu_host_page_mask; >> -#define HOST_PAGE_ALIGN(addr) (((addr) + qemu_host_page_size - 1) & >> qemu_host_page_mask) >> -#define REAL_HOST_PAGE_ALIGN(addr) (((addr) + >> qemu_real_host_page_size - 1) & \ >> - qemu_real_host_page_mask) >> +#define HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_host_page_size) >> +#define REAL_HOST_PAGE_ALIGN(addr) ROUND_UP((addr), >> qemu_real_host_page_size) >> /* same as PROT_xxx */ >> #define PAGE_READ 0x0001 >> Isn't this the patch where Richard pointed out that the compiler generates worse code? Paolo
On 10/24/19 8:04 AM, Paolo Bonzini wrote: > On 24/10/19 13:52, Philippe Mathieu-Daudé wrote: >>> diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h >>> index ad9ab85eb3..255bb186ac 100644 >>> --- a/include/exec/cpu-all.h >>> +++ b/include/exec/cpu-all.h >>> @@ -220,7 +220,7 @@ extern int target_page_bits; >>> #define TARGET_PAGE_SIZE (1 << TARGET_PAGE_BITS) >>> #define TARGET_PAGE_MASK ~(TARGET_PAGE_SIZE - 1) >>> -#define TARGET_PAGE_ALIGN(addr) (((addr) + TARGET_PAGE_SIZE - 1) & >>> TARGET_PAGE_MASK) >>> +#define TARGET_PAGE_ALIGN(addr) ROUND_UP((addr), TARGET_PAGE_SIZE) >>> /* Using intptr_t ensures that qemu_*_page_mask is sign-extended even >>> * when intptr_t is 32-bit and we are aligning a long long. >>> @@ -228,9 +228,8 @@ extern int target_page_bits; >>> extern uintptr_t qemu_host_page_size; >>> extern intptr_t qemu_host_page_mask; >>> -#define HOST_PAGE_ALIGN(addr) (((addr) + qemu_host_page_size - 1) & >>> qemu_host_page_mask) >>> -#define REAL_HOST_PAGE_ALIGN(addr) (((addr) + >>> qemu_real_host_page_size - 1) & \ >>> - qemu_real_host_page_mask) >>> +#define HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_host_page_size) >>> +#define REAL_HOST_PAGE_ALIGN(addr) ROUND_UP((addr), >>> qemu_real_host_page_size) >>> /* same as PROT_xxx */ >>> #define PAGE_READ 0x0001 >>> > > Isn't this the patch where Richard pointed out that the compiler > generates worse code? Richard confused ROUND_UP with QEMU_ALIGN_UP. r~
On 24/10/19 16:06, Richard Henderson wrote: > On 10/24/19 8:04 AM, Paolo Bonzini wrote: >> On 24/10/19 13:52, Philippe Mathieu-Daudé wrote: >>>> diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h >>>> index ad9ab85eb3..255bb186ac 100644 >>>> --- a/include/exec/cpu-all.h >>>> +++ b/include/exec/cpu-all.h >>>> @@ -220,7 +220,7 @@ extern int target_page_bits; >>>> #define TARGET_PAGE_SIZE (1 << TARGET_PAGE_BITS) >>>> #define TARGET_PAGE_MASK ~(TARGET_PAGE_SIZE - 1) >>>> -#define TARGET_PAGE_ALIGN(addr) (((addr) + TARGET_PAGE_SIZE - 1) & >>>> TARGET_PAGE_MASK) >>>> +#define TARGET_PAGE_ALIGN(addr) ROUND_UP((addr), TARGET_PAGE_SIZE) >>>> /* Using intptr_t ensures that qemu_*_page_mask is sign-extended even >>>> * when intptr_t is 32-bit and we are aligning a long long. >>>> @@ -228,9 +228,8 @@ extern int target_page_bits; >>>> extern uintptr_t qemu_host_page_size; >>>> extern intptr_t qemu_host_page_mask; >>>> -#define HOST_PAGE_ALIGN(addr) (((addr) + qemu_host_page_size - 1) & >>>> qemu_host_page_mask) >>>> -#define REAL_HOST_PAGE_ALIGN(addr) (((addr) + >>>> qemu_real_host_page_size - 1) & \ >>>> - qemu_real_host_page_mask) >>>> +#define HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_host_page_size) >>>> +#define REAL_HOST_PAGE_ALIGN(addr) ROUND_UP((addr), >>>> qemu_real_host_page_size) >>>> /* same as PROT_xxx */ >>>> #define PAGE_READ 0x0001 >>>> >> >> Isn't this the patch where Richard pointed out that the compiler >> generates worse code? > > Richard confused ROUND_UP with QEMU_ALIGN_UP. Uh, those are both really badly named. Especially considering that DIV_ROUND_UP divides the result of QEMU_ALIGN_UP. Should we consider swapping them?!? Paolo
On 10/24/19 10:14 AM, Paolo Bonzini wrote: > On 24/10/19 16:06, Richard Henderson wrote: >> Richard confused ROUND_UP with QEMU_ALIGN_UP. > > Uh, those are both really badly named. Especially considering that > DIV_ROUND_UP divides the result of QEMU_ALIGN_UP. Should we consider > swapping them?!? Perhaps not swapping, but perhaps renaming ROUND_UP to POW2_ROUND_UP or something. I dunno, naming is hard. :-P r~
© 2016 - 2026 Red Hat, Inc.