2010-06-25 22:03:06

by Grant Likely

[permalink] [raw]
Subject: [PATCH] of/flattree: Use common ALIGN() macro instead of arch specific _ALIGN

There's no reason to use the powerpc-specific _ALIGN macro in the fdt
code. Replace it with ALIGN() from kernel.h

Signed-off-by: Grant Likely <[email protected]>
---
arch/microblaze/include/asm/page.h | 7 -------
drivers/of/fdt.c | 20 ++++++++++----------
2 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h
index 464ff32..2fd4761 100644
--- a/arch/microblaze/include/asm/page.h
+++ b/arch/microblaze/include/asm/page.h
@@ -39,13 +39,6 @@
#define PAGE_UP(addr) (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
#define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1)))

-/* align addr on a size boundary - adjust address up/down if needed */
-#define _ALIGN_UP(addr, size) (((addr)+((size)-1))&(~((size)-1)))
-#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
-
-/* align addr on a size boundary - adjust address up if needed */
-#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
-
#ifndef CONFIG_MMU
/*
* PAGE_OFFSET -- the first address of the first page of memory. When not
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index b6987bb..d61fda8 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -69,9 +69,9 @@ int __init of_scan_flat_dt(int (*it)(unsigned long node,
u32 sz = be32_to_cpup((__be32 *)p);
p += 8;
if (be32_to_cpu(initial_boot_params->version) < 0x10)
- p = _ALIGN(p, sz >= 8 ? 8 : 4);
+ p = ALIGN(p, sz >= 8 ? 8 : 4);
p += sz;
- p = _ALIGN(p, 4);
+ p = ALIGN(p, 4);
continue;
}
if (tag != OF_DT_BEGIN_NODE) {
@@ -80,7 +80,7 @@ int __init of_scan_flat_dt(int (*it)(unsigned long node,
}
depth++;
pathp = (char *)p;
- p = _ALIGN(p + strlen(pathp) + 1, 4);
+ p = ALIGN(p + strlen(pathp) + 1, 4);
if ((*pathp) == '/') {
char *lp, *np;
for (lp = NULL, np = pathp; *np; np++)
@@ -109,7 +109,7 @@ unsigned long __init of_get_flat_dt_root(void)
p += 4;
BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE);
p += 4;
- return _ALIGN(p + strlen((char *)p) + 1, 4);
+ return ALIGN(p + strlen((char *)p) + 1, 4);
}

/**
@@ -138,7 +138,7 @@ void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
noff = be32_to_cpup((__be32 *)(p + 4));
p += 8;
if (be32_to_cpu(initial_boot_params->version) < 0x10)
- p = _ALIGN(p, sz >= 8 ? 8 : 4);
+ p = ALIGN(p, sz >= 8 ? 8 : 4);

nstr = find_flat_dt_string(noff);
if (nstr == NULL) {
@@ -151,7 +151,7 @@ void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
return (void *)p;
}
p += sz;
- p = _ALIGN(p, 4);
+ p = ALIGN(p, 4);
} while (1);
}

@@ -184,7 +184,7 @@ static void *__init unflatten_dt_alloc(unsigned long *mem, unsigned long size,
{
void *res;

- *mem = _ALIGN(*mem, align);
+ *mem = ALIGN(*mem, align);
res = (void *)*mem;
*mem += size;

@@ -220,7 +220,7 @@ unsigned long __init unflatten_dt_node(unsigned long mem,
*p += 4;
pathp = (char *)*p;
l = allocl = strlen(pathp) + 1;
- *p = _ALIGN(*p + l, 4);
+ *p = ALIGN(*p + l, 4);

/* version 0x10 has a more compact unit name here instead of the full
* path. we accumulate the full path size using "fpsize", we'll rebuild
@@ -299,7 +299,7 @@ unsigned long __init unflatten_dt_node(unsigned long mem,
noff = be32_to_cpup((__be32 *)((*p) + 4));
*p += 8;
if (be32_to_cpu(initial_boot_params->version) < 0x10)
- *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
+ *p = ALIGN(*p, sz >= 8 ? 8 : 4);

pname = find_flat_dt_string(noff);
if (pname == NULL) {
@@ -333,7 +333,7 @@ unsigned long __init unflatten_dt_node(unsigned long mem,
*prev_pp = pp;
prev_pp = &pp->next;
}
- *p = _ALIGN((*p) + sz, 4);
+ *p = ALIGN((*p) + sz, 4);
}
/* with version 0x10 we may not have the name property, recreate
* it here from the unit name if absent


2010-06-25 22:49:49

by Stephen Neuendorffer

[permalink] [raw]
Subject: RE: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN

Grant,

I need this for the PCI project. I also have a couple of other
generalizations of the drivers/of code
to get it to run after boot time in an X86 system...

Steve

Reviewed-by: Stephen Neuendorffer <[email protected]>

> -----Original Message-----
> From:
devicetree-discuss-bounces+stephen.neuendorffer=xilinx.com@lists.ozlabs.
org [mailto:devicetree-
> [email protected]] On
Behalf Of Grant Likely
> Sent: Friday, June 25, 2010 3:03 PM
> To: [email protected]; [email protected]
> Cc: [email protected];
[email protected]; linux-
> [email protected]; [email protected];
[email protected]
> Subject: [PATCH] of/flattree: Use common ALIGN() macro instead of
archspecific _ALIGN
>
> There's no reason to use the powerpc-specific _ALIGN macro in the fdt
> code. Replace it with ALIGN() from kernel.h
>
> Signed-off-by: Grant Likely <[email protected]>
> ---
> arch/microblaze/include/asm/page.h | 7 -------
> drivers/of/fdt.c | 20 ++++++++++----------
> 2 files changed, 10 insertions(+), 17 deletions(-)
>
> diff --git a/arch/microblaze/include/asm/page.h
b/arch/microblaze/include/asm/page.h
> index 464ff32..2fd4761 100644
> --- a/arch/microblaze/include/asm/page.h
> +++ b/arch/microblaze/include/asm/page.h
> @@ -39,13 +39,6 @@
> #define PAGE_UP(addr)
(((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
> #define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1)))
>
> -/* align addr on a size boundary - adjust address up/down if needed
*/
> -#define _ALIGN_UP(addr, size)
(((addr)+((size)-1))&(~((size)-1)))
> -#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
> -
> -/* align addr on a size boundary - adjust address up if needed */
> -#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
> -
> #ifndef CONFIG_MMU
> /*
> * PAGE_OFFSET -- the first address of the first page of memory. When
not
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index b6987bb..d61fda8 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -69,9 +69,9 @@ int __init of_scan_flat_dt(int (*it)(unsigned long
node,
> u32 sz = be32_to_cpup((__be32 *)p);
> p += 8;
> if (be32_to_cpu(initial_boot_params->version) <
0x10)
> - p = _ALIGN(p, sz >= 8 ? 8 : 4);
> + p = ALIGN(p, sz >= 8 ? 8 : 4);
> p += sz;
> - p = _ALIGN(p, 4);
> + p = ALIGN(p, 4);
> continue;
> }
> if (tag != OF_DT_BEGIN_NODE) {
> @@ -80,7 +80,7 @@ int __init of_scan_flat_dt(int (*it)(unsigned long
node,
> }
> depth++;
> pathp = (char *)p;
> - p = _ALIGN(p + strlen(pathp) + 1, 4);
> + p = ALIGN(p + strlen(pathp) + 1, 4);
> if ((*pathp) == '/') {
> char *lp, *np;
> for (lp = NULL, np = pathp; *np; np++)
> @@ -109,7 +109,7 @@ unsigned long __init of_get_flat_dt_root(void)
> p += 4;
> BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE);
> p += 4;
> - return _ALIGN(p + strlen((char *)p) + 1, 4);
> + return ALIGN(p + strlen((char *)p) + 1, 4);
> }
>
> /**
> @@ -138,7 +138,7 @@ void *__init of_get_flat_dt_prop(unsigned long
node, const char *name,
> noff = be32_to_cpup((__be32 *)(p + 4));
> p += 8;
> if (be32_to_cpu(initial_boot_params->version) < 0x10)
> - p = _ALIGN(p, sz >= 8 ? 8 : 4);
> + p = ALIGN(p, sz >= 8 ? 8 : 4);
>
> nstr = find_flat_dt_string(noff);
> if (nstr == NULL) {
> @@ -151,7 +151,7 @@ void *__init of_get_flat_dt_prop(unsigned long
node, const char *name,
> return (void *)p;
> }
> p += sz;
> - p = _ALIGN(p, 4);
> + p = ALIGN(p, 4);
> } while (1);
> }
>
> @@ -184,7 +184,7 @@ static void *__init unflatten_dt_alloc(unsigned
long *mem, unsigned long size,
> {
> void *res;
>
> - *mem = _ALIGN(*mem, align);
> + *mem = ALIGN(*mem, align);
> res = (void *)*mem;
> *mem += size;
>
> @@ -220,7 +220,7 @@ unsigned long __init unflatten_dt_node(unsigned
long mem,
> *p += 4;
> pathp = (char *)*p;
> l = allocl = strlen(pathp) + 1;
> - *p = _ALIGN(*p + l, 4);
> + *p = ALIGN(*p + l, 4);
>
> /* version 0x10 has a more compact unit name here instead of the
full
> * path. we accumulate the full path size using "fpsize", we'll
rebuild
> @@ -299,7 +299,7 @@ unsigned long __init unflatten_dt_node(unsigned
long mem,
> noff = be32_to_cpup((__be32 *)((*p) + 4));
> *p += 8;
> if (be32_to_cpu(initial_boot_params->version) < 0x10)
> - *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
> + *p = ALIGN(*p, sz >= 8 ? 8 : 4);
>
> pname = find_flat_dt_string(noff);
> if (pname == NULL) {
> @@ -333,7 +333,7 @@ unsigned long __init unflatten_dt_node(unsigned
long mem,
> *prev_pp = pp;
> prev_pp = &pp->next;
> }
> - *p = _ALIGN((*p) + sz, 4);
> + *p = ALIGN((*p) + sz, 4);
> }
> /* with version 0x10 we may not have the name property, recreate
> * it here from the unit name if absent
>
> _______________________________________________
> devicetree-discuss mailing list
> [email protected]
> https://lists.ozlabs.org/listinfo/devicetree-discuss


This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

2010-06-25 23:16:46

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN

On Fri, Jun 25, 2010 at 4:49 PM, Stephen Neuendorffer
<[email protected]> wrote:
> Grant,
>
> I need this for the PCI project. ?I also have a couple of other
> generalizations of the drivers/of code
> to get it to run after boot time in an X86 system...

Send me your patches! :-) Get them to me soon and I'll queue them up
for the next merge window.

g.

>
> Steve
>
> Reviewed-by: Stephen Neuendorffer <[email protected]>
>
>> -----Original Message-----
>> From:
> devicetree-discuss-bounces+stephen.neuendorffer=xilinx.com@lists.ozlabs.
> org [mailto:devicetree-
>> [email protected]] On
> Behalf Of Grant Likely
>> Sent: Friday, June 25, 2010 3:03 PM
>> To: [email protected]; [email protected]
>> Cc: [email protected];
> [email protected]; linux-
>> [email protected]; [email protected];
> [email protected]
>> Subject: [PATCH] of/flattree: Use common ALIGN() macro instead of
> archspecific _ALIGN
>>
>> There's no reason to use the powerpc-specific _ALIGN macro in the fdt
>> code. ?Replace it with ALIGN() from kernel.h
>>
>> Signed-off-by: Grant Likely <[email protected]>
>> ---
>> ?arch/microblaze/include/asm/page.h | ? ?7 -------
>> ?drivers/of/fdt.c ? ? ? ? ? ? ? ? ? | ? 20 ++++++++++----------
>> ?2 files changed, 10 insertions(+), 17 deletions(-)
>>
>> diff --git a/arch/microblaze/include/asm/page.h
> b/arch/microblaze/include/asm/page.h
>> index 464ff32..2fd4761 100644
>> --- a/arch/microblaze/include/asm/page.h
>> +++ b/arch/microblaze/include/asm/page.h
>> @@ -39,13 +39,6 @@
>> ?#define PAGE_UP(addr)
> (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
>> ?#define PAGE_DOWN(addr) ? ? ?((addr)&(~((PAGE_SIZE)-1)))
>>
>> -/* align addr on a size boundary - adjust address up/down if needed
> */
>> -#define _ALIGN_UP(addr, size)
> (((addr)+((size)-1))&(~((size)-1)))
>> -#define _ALIGN_DOWN(addr, size) ? ? ?((addr)&(~((size)-1)))
>> -
>> -/* align addr on a size boundary - adjust address up if needed */
>> -#define _ALIGN(addr, size) ? _ALIGN_UP(addr, size)
>> -
>> ?#ifndef CONFIG_MMU
>> ?/*
>> ? * PAGE_OFFSET -- the first address of the first page of memory. When
> not
>> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
>> index b6987bb..d61fda8 100644
>> --- a/drivers/of/fdt.c
>> +++ b/drivers/of/fdt.c
>> @@ -69,9 +69,9 @@ int __init of_scan_flat_dt(int (*it)(unsigned long
> node,
>> ? ? ? ? ? ? ? ? ? ? ? u32 sz = be32_to_cpup((__be32 *)p);
>> ? ? ? ? ? ? ? ? ? ? ? p += 8;
>> ? ? ? ? ? ? ? ? ? ? ? if (be32_to_cpu(initial_boot_params->version) <
> 0x10)
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? p = _ALIGN(p, sz >= 8 ? 8 : 4);
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? p = ALIGN(p, sz >= 8 ? 8 : 4);
>> ? ? ? ? ? ? ? ? ? ? ? p += sz;
>> - ? ? ? ? ? ? ? ? ? ? p = _ALIGN(p, 4);
>> + ? ? ? ? ? ? ? ? ? ? p = ALIGN(p, 4);
>> ? ? ? ? ? ? ? ? ? ? ? continue;
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? if (tag != OF_DT_BEGIN_NODE) {
>> @@ -80,7 +80,7 @@ int __init of_scan_flat_dt(int (*it)(unsigned long
> node,
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? depth++;
>> ? ? ? ? ? ? ? pathp = (char *)p;
>> - ? ? ? ? ? ? p = _ALIGN(p + strlen(pathp) + 1, 4);
>> + ? ? ? ? ? ? p = ALIGN(p + strlen(pathp) + 1, 4);
>> ? ? ? ? ? ? ? if ((*pathp) == '/') {
>> ? ? ? ? ? ? ? ? ? ? ? char *lp, *np;
>> ? ? ? ? ? ? ? ? ? ? ? for (lp = NULL, np = pathp; *np; np++)
>> @@ -109,7 +109,7 @@ unsigned long __init of_get_flat_dt_root(void)
>> ? ? ? ? ? ? ? p += 4;
>> ? ? ? BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE);
>> ? ? ? p += 4;
>> - ? ? return _ALIGN(p + strlen((char *)p) + 1, 4);
>> + ? ? return ALIGN(p + strlen((char *)p) + 1, 4);
>> ?}
>>
>> ?/**
>> @@ -138,7 +138,7 @@ void *__init of_get_flat_dt_prop(unsigned long
> node, const char *name,
>> ? ? ? ? ? ? ? noff = be32_to_cpup((__be32 *)(p + 4));
>> ? ? ? ? ? ? ? p += 8;
>> ? ? ? ? ? ? ? if (be32_to_cpu(initial_boot_params->version) < 0x10)
>> - ? ? ? ? ? ? ? ? ? ? p = _ALIGN(p, sz >= 8 ? 8 : 4);
>> + ? ? ? ? ? ? ? ? ? ? p = ALIGN(p, sz >= 8 ? 8 : 4);
>>
>> ? ? ? ? ? ? ? nstr = find_flat_dt_string(noff);
>> ? ? ? ? ? ? ? if (nstr == NULL) {
>> @@ -151,7 +151,7 @@ void *__init of_get_flat_dt_prop(unsigned long
> node, const char *name,
>> ? ? ? ? ? ? ? ? ? ? ? return (void *)p;
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? p += sz;
>> - ? ? ? ? ? ? p = _ALIGN(p, 4);
>> + ? ? ? ? ? ? p = ALIGN(p, 4);
>> ? ? ? } while (1);
>> ?}
>>
>> @@ -184,7 +184,7 @@ static void *__init unflatten_dt_alloc(unsigned
> long *mem, unsigned long size,
>> ?{
>> ? ? ? void *res;
>>
>> - ? ? *mem = _ALIGN(*mem, align);
>> + ? ? *mem = ALIGN(*mem, align);
>> ? ? ? res = (void *)*mem;
>> ? ? ? *mem += size;
>>
>> @@ -220,7 +220,7 @@ unsigned long __init unflatten_dt_node(unsigned
> long mem,
>> ? ? ? *p += 4;
>> ? ? ? pathp = (char *)*p;
>> ? ? ? l = allocl = strlen(pathp) + 1;
>> - ? ? *p = _ALIGN(*p + l, 4);
>> + ? ? *p = ALIGN(*p + l, 4);
>>
>> ? ? ? /* version 0x10 has a more compact unit name here instead of the
> full
>> ? ? ? ?* path. we accumulate the full path size using "fpsize", we'll
> rebuild
>> @@ -299,7 +299,7 @@ unsigned long __init unflatten_dt_node(unsigned
> long mem,
>> ? ? ? ? ? ? ? noff = be32_to_cpup((__be32 *)((*p) + 4));
>> ? ? ? ? ? ? ? *p += 8;
>> ? ? ? ? ? ? ? if (be32_to_cpu(initial_boot_params->version) < 0x10)
>> - ? ? ? ? ? ? ? ? ? ? *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
>> + ? ? ? ? ? ? ? ? ? ? *p = ALIGN(*p, sz >= 8 ? 8 : 4);
>>
>> ? ? ? ? ? ? ? pname = find_flat_dt_string(noff);
>> ? ? ? ? ? ? ? if (pname == NULL) {
>> @@ -333,7 +333,7 @@ unsigned long __init unflatten_dt_node(unsigned
> long mem,
>> ? ? ? ? ? ? ? ? ? ? ? *prev_pp = pp;
>> ? ? ? ? ? ? ? ? ? ? ? prev_pp = &pp->next;
>> ? ? ? ? ? ? ? }
>> - ? ? ? ? ? ? *p = _ALIGN((*p) + sz, 4);
>> + ? ? ? ? ? ? *p = ALIGN((*p) + sz, 4);
>> ? ? ? }
>> ? ? ? /* with version 0x10 we may not have the name property, recreate
>> ? ? ? ?* it here from the unit name if absent
>>
>> _______________________________________________
>> devicetree-discuss mailing list
>> [email protected]
>> https://lists.ozlabs.org/listinfo/devicetree-discuss
>
>
> This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.
>
>
>



--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

2010-06-25 23:34:23

by Stephen Neuendorffer

[permalink] [raw]
Subject: RE: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN

> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Grant Likely
> Sent: Friday, June 25, 2010 4:16 PM
> To: Stephen Neuendorffer
> Cc: [email protected]; [email protected]; [email protected]; devicetree-
> [email protected]; [email protected]; [email protected];
> [email protected]
> Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN
>
> On Fri, Jun 25, 2010 at 4:49 PM, Stephen Neuendorffer
> <[email protected]> wrote:
> > Grant,
> >
> > I need this for the PCI project. ?I also have a couple of other
> > generalizations of the drivers/of code
> > to get it to run after boot time in an X86 system...
>
> Send me your patches! :-) Get them to me soon and I'll queue them up
> for the next merge window.
>
> g.

Dangit, I just got the code compiling, and now I find out that X86 doesn't support out_be32()... :)
You'd think that somewhere somebody might have realized that all the duplicated driver macros that
do that are a bad idea...

Steve

>
> >
> > Steve
> >
> > Reviewed-by: Stephen Neuendorffer <[email protected]>
> >
> >> -----Original Message-----
> >> From:
> > devicetree-discuss-bounces+stephen.neuendorffer=xilinx.com@lists.ozlabs.
> > org [mailto:devicetree-
> >> [email protected]] On
> > Behalf Of Grant Likely
> >> Sent: Friday, June 25, 2010 3:03 PM
> >> To: [email protected]; [email protected]
> >> Cc: [email protected];
> > [email protected]; linux-
> >> [email protected]; [email protected];
> > [email protected]
> >> Subject: [PATCH] of/flattree: Use common ALIGN() macro instead of
> > archspecific _ALIGN
> >>
> >> There's no reason to use the powerpc-specific _ALIGN macro in the fdt
> >> code. ?Replace it with ALIGN() from kernel.h
> >>
> >> Signed-off-by: Grant Likely <[email protected]>
> >> ---
> >> ?arch/microblaze/include/asm/page.h | ? ?7 -------
> >> ?drivers/of/fdt.c ? ? ? ? ? ? ? ? ? | ? 20 ++++++++++----------
> >> ?2 files changed, 10 insertions(+), 17 deletions(-)
> >>
> >> diff --git a/arch/microblaze/include/asm/page.h
> > b/arch/microblaze/include/asm/page.h
> >> index 464ff32..2fd4761 100644
> >> --- a/arch/microblaze/include/asm/page.h
> >> +++ b/arch/microblaze/include/asm/page.h
> >> @@ -39,13 +39,6 @@
> >> ?#define PAGE_UP(addr)
> > (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
> >> ?#define PAGE_DOWN(addr) ? ? ?((addr)&(~((PAGE_SIZE)-1)))
> >>
> >> -/* align addr on a size boundary - adjust address up/down if needed
> > */
> >> -#define _ALIGN_UP(addr, size)
> > (((addr)+((size)-1))&(~((size)-1)))
> >> -#define _ALIGN_DOWN(addr, size) ? ? ?((addr)&(~((size)-1)))
> >> -
> >> -/* align addr on a size boundary - adjust address up if needed */
> >> -#define _ALIGN(addr, size) ? _ALIGN_UP(addr, size)
> >> -
> >> ?#ifndef CONFIG_MMU
> >> ?/*
> >> ? * PAGE_OFFSET -- the first address of the first page of memory. When
> > not
> >> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> >> index b6987bb..d61fda8 100644
> >> --- a/drivers/of/fdt.c
> >> +++ b/drivers/of/fdt.c
> >> @@ -69,9 +69,9 @@ int __init of_scan_flat_dt(int (*it)(unsigned long
> > node,
> >> ? ? ? ? ? ? ? ? ? ? ? u32 sz = be32_to_cpup((__be32 *)p);
> >> ? ? ? ? ? ? ? ? ? ? ? p += 8;
> >> ? ? ? ? ? ? ? ? ? ? ? if (be32_to_cpu(initial_boot_params->version) <
> > 0x10)
> >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? p = _ALIGN(p, sz >= 8 ? 8 : 4);
> >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? p = ALIGN(p, sz >= 8 ? 8 : 4);
> >> ? ? ? ? ? ? ? ? ? ? ? p += sz;
> >> - ? ? ? ? ? ? ? ? ? ? p = _ALIGN(p, 4);
> >> + ? ? ? ? ? ? ? ? ? ? p = ALIGN(p, 4);
> >> ? ? ? ? ? ? ? ? ? ? ? continue;
> >> ? ? ? ? ? ? ? }
> >> ? ? ? ? ? ? ? if (tag != OF_DT_BEGIN_NODE) {
> >> @@ -80,7 +80,7 @@ int __init of_scan_flat_dt(int (*it)(unsigned long
> > node,
> >> ? ? ? ? ? ? ? }
> >> ? ? ? ? ? ? ? depth++;
> >> ? ? ? ? ? ? ? pathp = (char *)p;
> >> - ? ? ? ? ? ? p = _ALIGN(p + strlen(pathp) + 1, 4);
> >> + ? ? ? ? ? ? p = ALIGN(p + strlen(pathp) + 1, 4);
> >> ? ? ? ? ? ? ? if ((*pathp) == '/') {
> >> ? ? ? ? ? ? ? ? ? ? ? char *lp, *np;
> >> ? ? ? ? ? ? ? ? ? ? ? for (lp = NULL, np = pathp; *np; np++)
> >> @@ -109,7 +109,7 @@ unsigned long __init of_get_flat_dt_root(void)
> >> ? ? ? ? ? ? ? p += 4;
> >> ? ? ? BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE);
> >> ? ? ? p += 4;
> >> - ? ? return _ALIGN(p + strlen((char *)p) + 1, 4);
> >> + ? ? return ALIGN(p + strlen((char *)p) + 1, 4);
> >> ?}
> >>
> >> ?/**
> >> @@ -138,7 +138,7 @@ void *__init of_get_flat_dt_prop(unsigned long
> > node, const char *name,
> >> ? ? ? ? ? ? ? noff = be32_to_cpup((__be32 *)(p + 4));
> >> ? ? ? ? ? ? ? p += 8;
> >> ? ? ? ? ? ? ? if (be32_to_cpu(initial_boot_params->version) < 0x10)
> >> - ? ? ? ? ? ? ? ? ? ? p = _ALIGN(p, sz >= 8 ? 8 : 4);
> >> + ? ? ? ? ? ? ? ? ? ? p = ALIGN(p, sz >= 8 ? 8 : 4);
> >>
> >> ? ? ? ? ? ? ? nstr = find_flat_dt_string(noff);
> >> ? ? ? ? ? ? ? if (nstr == NULL) {
> >> @@ -151,7 +151,7 @@ void *__init of_get_flat_dt_prop(unsigned long
> > node, const char *name,
> >> ? ? ? ? ? ? ? ? ? ? ? return (void *)p;
> >> ? ? ? ? ? ? ? }
> >> ? ? ? ? ? ? ? p += sz;
> >> - ? ? ? ? ? ? p = _ALIGN(p, 4);
> >> + ? ? ? ? ? ? p = ALIGN(p, 4);
> >> ? ? ? } while (1);
> >> ?}
> >>
> >> @@ -184,7 +184,7 @@ static void *__init unflatten_dt_alloc(unsigned
> > long *mem, unsigned long size,
> >> ?{
> >> ? ? ? void *res;
> >>
> >> - ? ? *mem = _ALIGN(*mem, align);
> >> + ? ? *mem = ALIGN(*mem, align);
> >> ? ? ? res = (void *)*mem;
> >> ? ? ? *mem += size;
> >>
> >> @@ -220,7 +220,7 @@ unsigned long __init unflatten_dt_node(unsigned
> > long mem,
> >> ? ? ? *p += 4;
> >> ? ? ? pathp = (char *)*p;
> >> ? ? ? l = allocl = strlen(pathp) + 1;
> >> - ? ? *p = _ALIGN(*p + l, 4);
> >> + ? ? *p = ALIGN(*p + l, 4);
> >>
> >> ? ? ? /* version 0x10 has a more compact unit name here instead of the
> > full
> >> ? ? ? ?* path. we accumulate the full path size using "fpsize", we'll
> > rebuild
> >> @@ -299,7 +299,7 @@ unsigned long __init unflatten_dt_node(unsigned
> > long mem,
> >> ? ? ? ? ? ? ? noff = be32_to_cpup((__be32 *)((*p) + 4));
> >> ? ? ? ? ? ? ? *p += 8;
> >> ? ? ? ? ? ? ? if (be32_to_cpu(initial_boot_params->version) < 0x10)
> >> - ? ? ? ? ? ? ? ? ? ? *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
> >> + ? ? ? ? ? ? ? ? ? ? *p = ALIGN(*p, sz >= 8 ? 8 : 4);
> >>
> >> ? ? ? ? ? ? ? pname = find_flat_dt_string(noff);
> >> ? ? ? ? ? ? ? if (pname == NULL) {
> >> @@ -333,7 +333,7 @@ unsigned long __init unflatten_dt_node(unsigned
> > long mem,
> >> ? ? ? ? ? ? ? ? ? ? ? *prev_pp = pp;
> >> ? ? ? ? ? ? ? ? ? ? ? prev_pp = &pp->next;
> >> ? ? ? ? ? ? ? }
> >> - ? ? ? ? ? ? *p = _ALIGN((*p) + sz, 4);
> >> + ? ? ? ? ? ? *p = ALIGN((*p) + sz, 4);
> >> ? ? ? }
> >> ? ? ? /* with version 0x10 we may not have the name property, recreate
> >> ? ? ? ?* it here from the unit name if absent
> >>
> >> _______________________________________________
> >> devicetree-discuss mailing list
> >> [email protected]
> >> https://lists.ozlabs.org/listinfo/devicetree-discuss
> >
> >
> > This email and any attachments are intended for the sole use of the named recipient(s) and
> contain(s) confidential information that may be proprietary, privileged or copyrighted under
> applicable law. If you are not the intended recipient, do not read, copy, or forward this email
> message or any attachments. Delete this email message and any attachments immediately.
> >
> >
> >
>
>
>
> --
> Grant Likely, B.Sc., P.Eng.
> Secret Lab Technologies Ltd.


This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

2010-06-25 23:34:39

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN

On Fri, Jun 25, 2010 at 5:18 PM, Stephen Neuendorffer
<[email protected]> wrote:
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]] On Behalf Of Grant Likely
>> Sent: Friday, June 25, 2010 4:16 PM
>> To: Stephen Neuendorffer
>> Cc: [email protected]; [email protected]; [email protected]; devicetree-
>> [email protected]; [email protected]; [email protected];
>> [email protected]
>> Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN
>>
>> On Fri, Jun 25, 2010 at 4:49 PM, Stephen Neuendorffer
>> <[email protected]> wrote:
>> > Grant,
>> >
>> > I need this for the PCI project. ?I also have a couple of other
>> > generalizations of the drivers/of code
>> > to get it to run after boot time in an X86 system...
>>
>> Send me your patches! ?:-) ?Get them to me soon and I'll queue them up
>> for the next merge window.
>>
>> g.
>
> Dangit, I just got the code compiling, and now I find out that X86 doesn't support out_be32()... ?:)
> You'd think that somewhere somebody might have realized that all the duplicated driver macros that
> do that are a bad idea...

:-)

I think iowrite32be should be cross-arch safe. in_*, out_* was mostly
a powerpc/sparc thing.

g.

2010-06-25 23:36:47

by Stephen Neuendorffer

[permalink] [raw]
Subject: RE: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN



> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Grant Likely
> Sent: Friday, June 25, 2010 4:34 PM
> To: Stephen Neuendorffer
> Cc: [email protected]; [email protected]; [email protected]; devicetree-
> [email protected]; [email protected]; [email protected];
> [email protected]
> Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN
>
> On Fri, Jun 25, 2010 at 5:18 PM, Stephen Neuendorffer
> <[email protected]> wrote:
> >> -----Original Message-----
> >> From: [email protected] [mailto:[email protected]] On Behalf Of Grant Likely
> >> Sent: Friday, June 25, 2010 4:16 PM
> >> To: Stephen Neuendorffer
> >> Cc: [email protected]; [email protected]; [email protected]; devicetree-
> >> [email protected]; [email protected]; [email protected];
> >> [email protected]
> >> Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN
> >>
> >> On Fri, Jun 25, 2010 at 4:49 PM, Stephen Neuendorffer
> >> <[email protected]> wrote:
> >> > Grant,
> >> >
> >> > I need this for the PCI project. ?I also have a couple of other
> >> > generalizations of the drivers/of code
> >> > to get it to run after boot time in an X86 system...
> >>
> >> Send me your patches! ?:-) ?Get them to me soon and I'll queue them up
> >> for the next merge window.
> >>
> >> g.
> >
> > Dangit, I just got the code compiling, and now I find out that X86 doesn't support out_be32()... ?:)
> > You'd think that somewhere somebody might have realized that all the duplicated driver macros that
> > do that are a bad idea...
>
> :-)
>
> I think iowrite32be should be cross-arch safe. in_*, out_* was mostly
> a powerpc/sparc thing.
>
> g.

See.. I told you it was a good idea to have that abstracted.. :)

S

This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

2010-06-25 23:47:14

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN

On Fri, Jun 25, 2010 at 5:36 PM, Stephen Neuendorffer
<[email protected]> wrote:
>
>
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]] On Behalf Of Grant Likely
>> Sent: Friday, June 25, 2010 4:34 PM
>> To: Stephen Neuendorffer
>> Cc: [email protected]; [email protected]; [email protected]; devicetree-
>> [email protected]; [email protected]; [email protected];
>> [email protected]
>> Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN
>>
>> On Fri, Jun 25, 2010 at 5:18 PM, Stephen Neuendorffer
>> <[email protected]> wrote:
>> >> -----Original Message-----
>> >> From: [email protected] [mailto:[email protected]] On Behalf Of Grant Likely
>> >> Sent: Friday, June 25, 2010 4:16 PM
>> >> To: Stephen Neuendorffer
>> >> Cc: [email protected]; [email protected]; [email protected]; devicetree-
>> >> [email protected]; [email protected]; [email protected];
>> >> [email protected]
>> >> Subject: Re: [PATCH] of/flattree: Use common ALIGN() macro instead of archspecific _ALIGN
>> >>
>> >> On Fri, Jun 25, 2010 at 4:49 PM, Stephen Neuendorffer
>> >> <[email protected]> wrote:
>> >> > Grant,
>> >> >
>> >> > I need this for the PCI project. ?I also have a couple of other
>> >> > generalizations of the drivers/of code
>> >> > to get it to run after boot time in an X86 system...
>> >>
>> >> Send me your patches! ?:-) ?Get them to me soon and I'll queue them up
>> >> for the next merge window.
>> >>
>> >> g.
>> >
>> > Dangit, I just got the code compiling, and now I find out that X86 doesn't support out_be32()... ?:)
>> > You'd think that somewhere somebody might have realized that all the duplicated driver macros that
>> > do that are a bad idea...
>>
>> :-)
>>
>> I think iowrite32be should be cross-arch safe. ?in_*, out_* was mostly
>> a powerpc/sparc thing.
>>
>> g.
>
> See.. I told you it was a good idea to have that abstracted.. :)

'course the real problem is not the access macros, but rather the fact
that sometime the xilinx registers are wired up as big-endian, and
sometimes as little-endian.

g.