Clean up some PowerPC source files to use the canonical alignment
macros from kernel.h, and add an ALIGN_DOWN() macro to kernel.h for
symmetry.

Signed-off-by: Robert P. J. Day <[EMAIL PROTECTED]>

---

  there doesn't seem to be any compelling reason for the PPC code to
need to define its own alignment macros, but i've been wrong before.

  and, no, i didn't test-compile this as i don't have a PPC
cross-compiler at the moment.  sorry.

 arch/powerpc/boot/addRamDisk.c               |    3 +--
 arch/powerpc/boot/of.c                       |    2 +-
 arch/powerpc/boot/page.h                     |    9 +--------
 arch/powerpc/boot/simple_alloc.c             |    8 ++++----
 arch/powerpc/kernel/prom_init.c              |   16 ++++++++--------
 arch/powerpc/mm/lmb.c                        |    6 +++---
 arch/powerpc/platforms/powermac/bootx_init.c |   10 +++++-----
 arch/powerpc/platforms/ps3/mm.c              |   16 ++++++++--------
 include/asm-powerpc/iommu.h                  |    2 +-
 include/asm-powerpc/page.h                   |    9 +--------
 include/asm-ppc/page.h                       |    9 +--------
 include/linux/kernel.h                       |    1 +
 12 files changed, 35 insertions(+), 56 deletions(-)

diff --git a/arch/powerpc/boot/addRamDisk.c b/arch/powerpc/boot/addRamDisk.c
index c02a999..609603b 100644
--- a/arch/powerpc/boot/addRamDisk.c
+++ b/arch/powerpc/boot/addRamDisk.c
@@ -10,7 +10,6 @@
 #define ElfHeaderSize  (64 * 1024)
 #define ElfPages  (ElfHeaderSize / 4096)
 #define KERNELBASE (0xc000000000000000)
-#define _ALIGN_UP(addr,size)   (((addr)+((size)-1))&(~((size)-1)))

 struct addr_range {
        unsigned long long addr;
@@ -177,7 +176,7 @@ int main(int argc, char **argv)
        roundedKernelPages = roundedKernelLen / 4096;
        printf("Vmlinux pages to copy = %ld/0x%lx \n", roundedKernelPages, 
roundedKernelPages);

-       offset_end = _ALIGN_UP(vmlinux.memsize, 4096);
+       offset_end = ALIGN(vmlinux.memsize, 4096);
        /* calc how many pages we need to insert between the vmlinux and the 
start of the ram disk */
        padPages = offset_end/4096 - roundedKernelPages;

diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c
index 0182f38..dcdc067 100644
--- a/arch/powerpc/boot/of.c
+++ b/arch/powerpc/boot/of.c
@@ -178,7 +178,7 @@ static void *of_try_claim(u32 size)
        unsigned long addr = 0;

        if (claim_base == 0)
-               claim_base = _ALIGN_UP((unsigned long)_end, ONE_MB);
+               claim_base = ALIGN((unsigned long)_end, ONE_MB);

        for(; claim_base < RAM_END; claim_base += ONE_MB) {
 #ifdef DEBUG
diff --git a/arch/powerpc/boot/page.h b/arch/powerpc/boot/page.h
index 14eca30..5c33be7 100644
--- a/arch/powerpc/boot/page.h
+++ b/arch/powerpc/boot/page.h
@@ -21,14 +21,7 @@
 #define PAGE_SIZE      (ASM_CONST(1) << PAGE_SHIFT)
 #define PAGE_MASK      (~(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)
-
 /* to align the pointer to the (next) page boundary */
-#define PAGE_ALIGN(addr)       _ALIGN(addr, PAGE_SIZE)
+#define PAGE_ALIGN(addr)       ALIGN(addr, PAGE_SIZE)

 #endif                         /* _PPC_BOOT_PAGE_H */
diff --git a/arch/powerpc/boot/simple_alloc.c b/arch/powerpc/boot/simple_alloc.c
index cfe3a75..39bb37f 100644
--- a/arch/powerpc/boot/simple_alloc.c
+++ b/arch/powerpc/boot/simple_alloc.c
@@ -42,7 +42,7 @@ static void *simple_malloc(u32 size)
        if (size == 0)
                goto err_out;

-       size = _ALIGN_UP(size, alloc_min);
+       size = ALIGN(size, alloc_min);

        for (i=0; i<tbl_entries; i++, p++)
                if (!(p->flags & ENTRY_BEEN_USED)) { /* never been used */
@@ -127,16 +127,16 @@ void *simple_alloc_init(char *base, u32 heap_size, u32 
granularity,
 {
        u32 heap_base, tbl_size;

-       heap_size = _ALIGN_UP(heap_size, granularity);
+       heap_size = ALIGN(heap_size, granularity);
        alloc_min = granularity;
        tbl_entries = max_allocs;

        tbl_size = tbl_entries * sizeof(struct alloc_info);

-       alloc_tbl = (struct alloc_info *)_ALIGN_UP((unsigned long)base, 8);
+       alloc_tbl = (struct alloc_info *)ALIGN((unsigned long)base, 8);
        memset(alloc_tbl, 0, tbl_size);

-       heap_base = _ALIGN_UP((u32)alloc_tbl + tbl_size, alloc_min);
+       heap_base = ALIGN((u32)alloc_tbl + tbl_size, alloc_min);

        next_base = heap_base;
        space_left = heap_size;
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index 520ef42..b571fef 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -842,18 +842,18 @@ static unsigned long __init alloc_up(unsigned long size, 
unsigned long align)
        unsigned long addr = 0;

        if (align)
-               base = _ALIGN_UP(base, align);
+               base = ALIGN(base, align);
        prom_debug("alloc_up(%x, %x)\n", size, align);
        if (RELOC(ram_top) == 0)
                prom_panic("alloc_up() called with mem not initialized\n");

        if (align)
-               base = _ALIGN_UP(RELOC(alloc_bottom), align);
+               base = ALIGN(RELOC(alloc_bottom), align);
        else
                base = RELOC(alloc_bottom);

        for(; (base + size) <= RELOC(alloc_top);
-           base = _ALIGN_UP(base + 0x100000, align)) {
+           base = ALIGN(base + 0x100000, align)) {
                prom_debug("    trying: 0x%x\n\r", base);
                addr = (unsigned long)prom_claim(base, size, 0);
                if (addr != PROM_ERROR && addr != 0)
@@ -893,7 +893,7 @@ static unsigned long __init alloc_down(unsigned long size, 
unsigned long align,

        if (highmem) {
                /* Carve out storage for the TCE table. */
-               addr = _ALIGN_DOWN(RELOC(alloc_top_high) - size, align);
+               addr = ALIGN_DOWN(RELOC(alloc_top_high) - size, align);
                if (addr <= RELOC(alloc_bottom))
                        return 0;
                /* Will we bump into the RMO ? If yes, check out that we
@@ -911,9 +911,9 @@ static unsigned long __init alloc_down(unsigned long size, 
unsigned long align,
                goto bail;
        }

-       base = _ALIGN_DOWN(RELOC(alloc_top) - size, align);
+       base = ALIGN_DOWN(RELOC(alloc_top) - size, align);
        for (; base > RELOC(alloc_bottom);
-            base = _ALIGN_DOWN(base - 0x100000, align))  {
+            base = ALIGN_DOWN(base - 0x100000, align))  {
                prom_debug("    trying: 0x%x\n\r", base);
                addr = (unsigned long)prom_claim(base, size, 0);
                if (addr != PROM_ERROR && addr != 0)
@@ -979,8 +979,8 @@ static void reserve_mem(u64 base, u64 size)
         * have our terminator with "size" set to 0 since we are
         * dumb and just copy this entire array to the boot params
         */
-       base = _ALIGN_DOWN(base, PAGE_SIZE);
-       top = _ALIGN_UP(top, PAGE_SIZE);
+       base = ALIGN_DOWN(base, PAGE_SIZE);
+       top = ALIGN(top, PAGE_SIZE);
        size = top - base;

        if (cnt >= (MEM_RESERVE_MAP_SIZE - 1))
diff --git a/arch/powerpc/mm/lmb.c b/arch/powerpc/mm/lmb.c
index 716a290..4ff7a04 100644
--- a/arch/powerpc/mm/lmb.c
+++ b/arch/powerpc/mm/lmb.c
@@ -261,16 +261,16 @@ unsigned long __init __lmb_alloc_base(unsigned long size, 
unsigned long align,
                unsigned long lmbsize = lmb.memory.region[i].size;

                if (max_addr == LMB_ALLOC_ANYWHERE)
-                       base = _ALIGN_DOWN(lmbbase + lmbsize - size, align);
+                       base = ALIGN_DOWN(lmbbase + lmbsize - size, align);
                else if (lmbbase < max_addr) {
                        base = min(lmbbase + lmbsize, max_addr);
-                       base = _ALIGN_DOWN(base - size, align);
+                       base = ALIGN_DOWN(base - size, align);
                } else
                        continue;

                while ((lmbbase <= base) &&
                       ((j = lmb_overlaps_region(&lmb.reserved, base, size)) >= 
0) )
-                       base = _ALIGN_DOWN(lmb.reserved.region[j].base - size,
+                       base = ALIGN_DOWN(lmb.reserved.region[j].base - size,
                                           align);

                if ((base != 0) && (lmbbase <= base))
diff --git a/arch/powerpc/platforms/powermac/bootx_init.c 
b/arch/powerpc/platforms/powermac/bootx_init.c
index 9d73d02..b841224 100644
--- a/arch/powerpc/platforms/powermac/bootx_init.c
+++ b/arch/powerpc/platforms/powermac/bootx_init.c
@@ -111,7 +111,7 @@ static void * __init bootx_early_getprop(unsigned long base,

 #define dt_push_token(token, mem) \
        do { \
-               *(mem) = _ALIGN_UP(*(mem),4); \
+               *(mem) = ALIGN(*(mem),4); \
                *((u32 *)*(mem)) = token; \
                *(mem) += 4; \
        } while(0)
@@ -153,7 +153,7 @@ static void __init bootx_dt_add_prop(char *name, void 
*data, int size,
        /* push property content */
        if (size && data) {
                memcpy((void *)*mem_end, data, size);
-               *mem_end = _ALIGN_UP(*mem_end + size, 4);
+               *mem_end = ALIGN(*mem_end + size, 4);
        }
 }

@@ -306,7 +306,7 @@ static void __init bootx_scan_dt_build_struct(unsigned long 
base,
                        *lp++ = *p;
        }
        *lp = 0;
-       *mem_end = _ALIGN_UP((unsigned long)lp + 1, 4);
+       *mem_end = ALIGN((unsigned long)lp + 1, 4);

        /* get and store all properties */
        while (*ppp) {
@@ -359,11 +359,11 @@ static unsigned long __init bootx_flatten_dt(unsigned 
long start)
        /* Start using memory after the big blob passed by BootX, get
         * some space for the header
         */
-       mem_start = mem_end = _ALIGN_UP(((unsigned long)bi) + start, 4);
+       mem_start = mem_end = ALIGN(((unsigned long)bi) + start, 4);
        DBG("Boot params header at: %x\n", mem_start);
        hdr = (struct boot_param_header *)mem_start;
        mem_end += sizeof(struct boot_param_header);
-       rsvmap = (u64 *)(_ALIGN_UP(mem_end, 8));
+       rsvmap = (u64 *)(ALIGN(mem_end, 8));
        hdr->off_mem_rsvmap = ((unsigned long)rsvmap) - mem_start;
        mem_end = ((unsigned long)rsvmap) + 8 * sizeof(u64);

diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c
index 49c0d01..389c9d0 100644
--- a/arch/powerpc/platforms/ps3/mm.c
+++ b/arch/powerpc/platforms/ps3/mm.c
@@ -238,7 +238,7 @@ int ps3_mm_region_create(struct mem_region *r, unsigned 
long size)
        int result;
        unsigned long muid;

-       r->size = _ALIGN_DOWN(size, 1 << PAGE_SHIFT_16M);
+       r->size = ALIGN_DOWN(size, 1 << PAGE_SHIFT_16M);

        DBG("%s:%d requested  %lxh\n", __func__, __LINE__, size);
        DBG("%s:%d actual     %lxh\n", __func__, __LINE__, r->size);
@@ -395,8 +395,8 @@ static struct dma_chunk * dma_find_chunk(struct 
ps3_dma_region *r,
        unsigned long bus_addr, unsigned long len)
 {
        struct dma_chunk *c;
-       unsigned long aligned_bus = _ALIGN_DOWN(bus_addr, 1 << r->page_size);
-       unsigned long aligned_len = _ALIGN_UP(len, 1 << r->page_size);
+       unsigned long aligned_bus = ALIGN_DOWN(bus_addr, 1 << r->page_size);
+       unsigned long aligned_len = ALIGN(len, 1 << r->page_size);

        list_for_each_entry(c, &r->chunk_list.head, link) {
                /* intersection */
@@ -500,7 +500,7 @@ static int dma_region_create(struct ps3_dma_region* r)
 {
        int result;

-       r->len = _ALIGN_UP(map.total, 1 << r->page_size);
+       r->len = ALIGN(map.total, 1 << r->page_size);
        INIT_LIST_HEAD(&r->chunk_list.head);
        spin_lock_init(&r->chunk_list.lock);

@@ -594,8 +594,8 @@ static int dma_map_area(struct ps3_dma_region *r, unsigned 
long virt_addr,
                return 0;
        }

-       result = dma_map_pages(r, _ALIGN_DOWN(phys_addr, 1 << r->page_size),
-               _ALIGN_UP(len, 1 << r->page_size), &c);
+       result = dma_map_pages(r, ALIGN_DOWN(phys_addr, 1 << r->page_size),
+               ALIGN(len, 1 << r->page_size), &c);

        if (result) {
                *bus_addr = 0;
@@ -630,9 +630,9 @@ int dma_unmap_area(struct ps3_dma_region *r, unsigned long 
bus_addr,
        c = dma_find_chunk(r, bus_addr, len);

        if (!c) {
-               unsigned long aligned_bus = _ALIGN_DOWN(bus_addr,
+               unsigned long aligned_bus = ALIGN_DOWN(bus_addr,
                        1 << r->page_size);
-               unsigned long aligned_len = _ALIGN_UP(len, 1 << r->page_size);
+               unsigned long aligned_len = ALIGN(len, 1 << r->page_size);
                DBG("%s:%d: not found: bus_addr %lxh\n",
                        __func__, __LINE__, bus_addr);
                DBG("%s:%d: not found: len %lxh\n",
diff --git a/include/asm-powerpc/iommu.h b/include/asm-powerpc/iommu.h
index f85dbd3..d4f6fb6 100644
--- a/include/asm-powerpc/iommu.h
+++ b/include/asm-powerpc/iommu.h
@@ -32,7 +32,7 @@
 #define IOMMU_PAGE_SHIFT      12
 #define IOMMU_PAGE_SIZE       (ASM_CONST(1) << IOMMU_PAGE_SHIFT)
 #define IOMMU_PAGE_MASK       (~((1 << IOMMU_PAGE_SHIFT) - 1))
-#define IOMMU_PAGE_ALIGN(addr) _ALIGN_UP(addr, IOMMU_PAGE_SIZE)
+#define IOMMU_PAGE_ALIGN(addr) ALIGN(addr, IOMMU_PAGE_SIZE)

 /* Boot time flags */
 extern int iommu_is_off;
diff --git a/include/asm-powerpc/page.h b/include/asm-powerpc/page.h
index b4d38b0..d93453c 100644
--- a/include/asm-powerpc/page.h
+++ b/include/asm-powerpc/page.h
@@ -83,15 +83,8 @@
 #include <asm/page_32.h>
 #endif

-/* 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)
-
 /* to align the pointer to the (next) page boundary */
-#define PAGE_ALIGN(addr)       _ALIGN(addr, PAGE_SIZE)
+#define PAGE_ALIGN(addr)       ALIGN(addr, PAGE_SIZE)

 /*
  * Don't compare things with KERNELBASE or PAGE_OFFSET to test for
diff --git a/include/asm-ppc/page.h b/include/asm-ppc/page.h
index fe95c82..9ed27db 100644
--- a/include/asm-ppc/page.h
+++ b/include/asm-ppc/page.h
@@ -36,15 +36,8 @@ typedef unsigned long pte_basic_t;
 #define PTE_FMT                "%.8lx"
 #endif

-/* 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)
-
 /* to align the pointer to the (next) page boundary */
-#define PAGE_ALIGN(addr)       _ALIGN(addr, PAGE_SIZE)
+#define PAGE_ALIGN(addr)       ALIGN(addr, PAGE_SIZE)


 #undef STRICT_MM_TYPECHECKS
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index b0c4a05..cc1e9ad 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -31,6 +31,7 @@

 #define ALIGN(x,a)             __ALIGN_MASK(x,(typeof(x))(a)-1)
 #define __ALIGN_MASK(x,mask)   (((x)+(mask))&~(mask))
+#define ALIGN_DOWN(x,a)                ((x)&(~((a)-1)))

 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to