diff options
author | Paul Mackerras <paulus@samba.org> | 2006-06-15 04:03:32 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-06-15 05:25:50 -0400 |
commit | 0f582bc1f2cccacd613c411fbea55873d17c3429 (patch) | |
tree | 83fc9e579bb520a876ffd75910861c811a0eac14 /arch | |
parent | bf72aeba2ffef599d1d386425c9e46b82be657cd (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.c | 7 |
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; |