aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2006-06-15 04:03:32 -0400
committerPaul Mackerras <paulus@samba.org>2006-06-15 05:25:50 -0400
commit0f582bc1f2cccacd613c411fbea55873d17c3429 (patch)
tree83fc9e579bb520a876ffd75910861c811a0eac14 /arch
parentbf72aeba2ffef599d1d386425c9e46b82be657cd (diff)
powerpc: Simplify push_end definition in pci_32.c
The push_end macro in arch/powerpc/kernel/pci_32.c uses integer division and multiplication to achieve the effect of rounding a resource end address up and then advancing it to the end of a power-of-2 sized region. This changes it to an equivalent computation that only needs an integer add and OR. This is partly based on an earlier patch by Mel Gorman. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/pci_32.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index b129d2e4b759..c858eb4bef17 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -1113,9 +1113,10 @@ check_for_io_childs(struct pci_bus *bus, struct resource* res, int *found_vga)
1113 int i; 1113 int i;
1114 int rc = 0; 1114 int rc = 0;
1115 1115
1116#define push_end(res, size) do { unsigned long __sz = (size) ; \ 1116#define push_end(res, mask) do { \
1117 res->end = ((res->end + __sz) / (__sz + 1)) * (__sz + 1) + __sz; \ 1117 BUG_ON((mask+1) & mask); \
1118 } while (0) 1118 res->end = (res->end + mask) | mask; \
1119} while (0)
1119 1120
1120 list_for_each_entry(dev, &bus->devices, bus_list) { 1121 list_for_each_entry(dev, &bus->devices, bus_list) {
1121 u16 class = dev->class >> 8; 1122 u16 class = dev->class >> 8;