android_kernel_xiaomi_sm8350/include/asm-powerpc
Andrea Righi 27ac792ca0 PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures
On 32-bit architectures PAGE_ALIGN() truncates 64-bit values to the 32-bit
boundary. For example:

	u64 val = PAGE_ALIGN(size);

always returns a value < 4GB even if size is greater than 4GB.

The problem resides in PAGE_MASK definition (from include/asm-x86/page.h for
example):

#define PAGE_SHIFT      12
#define PAGE_SIZE       (_AC(1,UL) << PAGE_SHIFT)
#define PAGE_MASK       (~(PAGE_SIZE-1))
...
#define PAGE_ALIGN(addr)       (((addr)+PAGE_SIZE-1)&PAGE_MASK)

The "~" is performed on a 32-bit value, so everything in "and" with
PAGE_MASK greater than 4GB will be truncated to the 32-bit boundary.
Using the ALIGN() macro seems to be the right way, because it uses
typeof(addr) for the mask.

Also move the PAGE_ALIGN() definitions out of include/asm-*/page.h in
include/linux/mm.h.

See also lkml discussion: http://lkml.org/lkml/2008/6/11/237

[akpm@linux-foundation.org: fix drivers/media/video/uvc/uvc_queue.c]
[akpm@linux-foundation.org: fix v850]
[akpm@linux-foundation.org: fix powerpc]
[akpm@linux-foundation.org: fix arm]
[akpm@linux-foundation.org: fix mips]
[akpm@linux-foundation.org: fix drivers/media/video/pvrusb2/pvrusb2-dvb.c]
[akpm@linux-foundation.org: fix drivers/mtd/maps/uclinux.c]
[akpm@linux-foundation.org: fix powerpc]
Signed-off-by: Andrea Righi <righi.andrea@gmail.com>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-24 10:47:21 -07:00
..
iseries [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
8xx_immap.h [POWERPC] include/asm-powerpc/: Spelling fixes 2007-12-20 16:17:44 +11:00
8253pit.h
a.out.h aout: move STACK_TOP[_MAX] to asm/processor.h 2008-02-08 09:22:29 -08:00
abs_addr.h [LIB]: Make PowerPC LMB code generic so sparc64 can use it too. 2008-02-13 16:56:49 -08:00
agp.h x86: remove flush_agp_mappings() 2008-01-30 13:34:07 +01:00
asm-compat.h powerpc: Add a #define for aligning to a long-sized boundary 2008-07-22 10:39:34 +10:00
atomic.h [POWERPC] Implement atomic{, 64}_{read, write}() without volatile 2007-08-17 11:01:58 +10:00
auxvec.h
backlight.h
bitops.h generic: implement __fls on all 64-bit archs 2008-04-26 19:21:16 +02:00
bootx.h
btext.h
bug.h Fix WARN_ON() on bitfield ops 2007-07-31 21:12:07 -07:00
bugs.h
byteorder.h
cache.h powerpc/booke: Add support for new e500mc core 2008-06-18 16:17:56 -05:00
cacheflush.h
cell-pmu.h
cell-regs.h [POWERPC] cell: Add Cell memory controller register defs and expose it 2007-10-09 21:01:56 +10:00
checksum.h
clk_interface.h [POWERPC] clk.h interface for platforms 2007-10-03 09:11:56 +10:00
code-patching.h powerpc: Fixup lwsync at runtime 2008-07-03 16:58:10 +10:00
compat.h asm-*/compat.h: fix typo in comment 2008-02-03 16:32:51 +02:00
cpm1.h powerpc/cpm: Remove !CONFIG_PPC_CPM_NEW_BINDING code 2008-06-26 01:49:06 -05:00
cpm2.h powerpc/cpm: Remove !CONFIG_PPC_CPM_NEW_BINDING code 2008-06-26 01:49:06 -05:00
cpm.h powerpc/QE: switch to the cpm_muram implementation 2008-06-10 11:11:21 -05:00
cputable.h powerpc: Add PPC_FEATURE_PSERIES_PERFMON_COMPAT 2008-07-15 12:24:57 +10:00
cputhreads.h [POWERPC] Fix thinko in cpu_thread_mask_to_cores() 2008-02-26 22:17:03 +11:00
cputime.h taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
current.h
dbdma.h
dcr-generic.h [POWERPC] Refactor DCR code 2008-05-29 07:06:56 -05:00
dcr-mmio.h [POWERPC] Refactor DCR code 2008-05-29 07:06:56 -05:00
dcr-native.h [POWERPC] Refactor DCR code 2008-05-29 07:06:56 -05:00
dcr-regs.h [POWERPC] 4xx: Add PPC4xx L2-cache support (440GX) 2008-03-26 07:27:54 -05:00
dcr.h [POWERPC] Refactor DCR code 2008-05-29 07:06:56 -05:00
delay.h
device.h
div64.h
dma-mapping.h powerpc: move device_to_mask() to dma-mapping.h 2008-07-09 16:30:44 +10:00
dma.h scheduled OSS driver removal 2008-02-06 10:41:02 -08:00
edac.h
eeh_event.h
eeh.h
elf.h powerpc: Remove old dump_task_* functions 2008-07-03 16:58:13 +10:00
emergency-restart.h
errno.h
exception.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
fb.h fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
fcntl.h
feature-fixups.h powerpc: Fixup lwsync at runtime 2008-07-03 16:58:10 +10:00
firmware.h powerpc: Consolidate CPU and firmware feature fixup macros 2008-07-01 11:28:25 +10:00
fixmap.h [POWERPC] Port fixmap from x86 and use for kmap_atomic 2008-04-24 20:58:02 +10:00
floppy.h cleanup floppy.h 2007-10-17 08:42:55 -07:00
fs_pd.h [POWERPC] 85xx: Killed <asm/mpc85xx.h> 2007-10-11 09:14:31 -05:00
fsl_gtm.h powerpc/sysdev: implement FSL GTM support 2008-06-10 10:38:50 -05:00
fsl_lbc.h [POWERPC] fsl_lbc: implement few UPM routines 2008-04-17 01:01:38 -05:00
ftrace.h ftrace: store mcount address in rec->ip 2008-06-23 22:10:56 +02:00
futex.h asm-*/futex.h should include linux/uaccess.h 2008-04-30 08:29:52 -07:00
gpio.h [POWERPC] Implement support for the GPIO LIB API 2008-04-17 07:46:11 +10:00
grackle.h
hardirq.h
heathrow.h
highmem.h [POWERPC] Port fixmap from x86 and use for kmap_atomic 2008-04-24 20:58:02 +10:00
hugetlb.h powerpc: support multiple hugepage sizes 2008-07-24 10:47:19 -07:00
hvcall.h [POWERPC] Add H_ILLAN_ATTRIBUTES hcall number 2007-07-11 13:24:40 +10:00
hvconsole.h
hvcserver.h
hw_irq.h ftrace, POWERPC: add irqs_disabled_flags to ppc 2008-05-23 22:37:23 +02:00
hydra.h [POWERPC] Copy over headers from arch/ppc to arch/powerpc that we need 2007-08-22 22:43:29 -05:00
i8259.h
ibmebus.h [POWERPC] ibmebus: Move to of_device and of_platform_driver, match eHCA and eHEA drivers 2007-10-17 22:30:08 +10:00
ide.h ide: remove ide_init_default_irq() macro 2008-04-18 00:46:35 +02:00
immap_86xx.h [POWERPC] 86xx: fix guts_set_dmacr() and add guts_set_pmuxcr_dma() to immap_86xx.h 2007-12-11 13:57:18 -06:00
immap_cpm2.h [POWERPC] cpm2: Infrastructure code cleanup. 2007-10-04 11:02:04 -05:00
immap_qe.h [POWERPC] QE: immap_qe.h should include asm/io.h 2008-04-17 01:01:39 -05:00
io-defs.h [POWERPC] cell: Generalize io-workarounds code 2008-04-24 21:08:12 +10:00
io.h powerpc ioremap_prot 2008-07-24 10:47:15 -07:00
ioctl.h [POWERPC] Get most of ioctl.h content from <asm-generic/ioctl.h> 2008-05-16 23:22:28 +10:00
ioctls.h
iommu.h powerpc/dma: implement new dma_*map*_attrs() interfaces 2008-07-09 16:30:43 +10:00
ipcbuf.h
ipic.h [POWERPC] ipic: add new interrupts introduced by new chip 2007-12-11 13:57:18 -06:00
irq_regs.h
irq.h [POWERPC] Move to runtime allocated exception stacks 2008-06-02 14:54:42 -05:00
irqflags.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
Kbuild powerpc: mman.h export fixups 2008-07-15 12:24:53 +10:00
kdebug.h x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
kdump.h [POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero) 2008-04-24 20:58:01 +10:00
kexec.h powerpc: Provide dummy crash_shutdown_register 2008-06-30 22:30:55 +10:00
keylargo.h
kgdb.h kgdb, powerpc: arch specific powerpc kgdb support 2008-07-23 11:30:15 -05:00
kmap_types.h
kprobes.h Kprobes: indicate kretprobe support in Kconfig 2008-03-04 16:35:11 -08:00
kvm_asm.h KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00
kvm_host.h KVM: Add coalesced MMIO support (powerpc part) 2008-07-20 12:42:31 +03:00
kvm_para.h KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00
kvm_ppc.h KVM: ppc: Remove duplicate function 2008-06-06 21:22:09 +03:00
kvm.h KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00
libata-portmap.h
linkage.h
lmb.h [POWERPC] Use lowmem_end_addr to limit lmb allocations on ppc32 2008-04-17 07:46:13 +10:00
local.h local_t: powerpc extension 2007-05-08 11:15:20 -07:00
lppaca.h [POWERPC] Donate idle CPU cycles on dedicated partitions 2007-06-14 22:29:58 +10:00
lv1call.h [POWERPC] PS3: System-bus rework 2007-06-28 19:16:38 +10:00
machdep.h powerpc/dma: Use the struct dma_attrs in iommu code 2008-07-22 10:39:32 +10:00
macio.h [POWERPC] replace asm/of_device.h with linux/of_device.h in macio.h 2008-04-15 21:21:26 +10:00
mc146818rtc.h
mediabay.h [POWERPC] Build fix for drivers/macintosh/mediabay.c 2008-06-16 15:00:47 +10:00
mman.h powerpc: mman.h export fixups 2008-07-15 12:24:53 +10:00
mmu_context.h remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
mmu-8xx.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-40x.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-44x.h ppc: Export tlb_44x_hwater for KVM 2008-04-27 18:21:37 +03:00
mmu-fsl-booke.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-hash32.h powerpc: Get rid of bitfields in ppc_bat struct 2008-06-30 22:31:05 +10:00
mmu-hash64.h powerpc: support multiple hugepage sizes 2008-07-24 10:47:19 -07:00
mmu.h [POWERPC] 40x MMU 2007-08-20 07:28:48 -05:00
mmzone.h [POWERPC] We don't define CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID 2007-05-10 21:28:13 +10:00
module.h
mpc6xx.h [POWERPC] Add 6xx-style HID0_SLEEP support. 2008-05-16 23:22:28 +10:00
mpc8xx.h [POWERPC] 8xx: Get rid of conditional includes of board specific setup 2008-01-28 08:31:04 -06:00
mpc52xx_psc.h [POWERPC] mpc512x: Add MPC512x PSC support to MPC52xx psc driver 2008-02-06 14:05:40 -07:00
mpc52xx.h [POWERPC] Add common clock setting routine mpc52xx_psc_set_clkdiv() 2008-01-26 15:32:18 -07:00
mpc86xx.h [POWERPC] kill isa_{io,mem}_base definitions for !PCI 2007-06-29 01:56:43 -05:00
mpc512x.h [POWERPC] mpc512x: Basic platform support 2008-02-06 14:03:10 -07:00
mpc8260.h [POWERPC] 82xx: Embedded Planet EP8248E support 2008-01-23 19:34:43 -06:00
mpic.h Merge branch 'merge' into powerpc-next 2008-05-23 16:53:23 +10:00
msgbuf.h
mutex.h
namei.h
nvram.h include/asm-powerpc/nvram.h needs list.h 2008-02-05 09:44:08 -08:00
of_device.h [POWERPC] Move of_device_get_modalias to drivers/of 2008-05-16 23:22:28 +10:00
of_platform.h [POWERPC] Enable RTC for Ebony and Walnut (v2) 2008-01-25 07:07:26 -06:00
ohare.h
oprofile_impl.h [POWERPC] Made FSL Book-E PMC support more generic 2008-02-05 23:34:14 -06:00
paca.h [POWERPC] Raise the upper limit of NR_CPUS and move the pacas into the BSS 2008-04-24 20:58:04 +10:00
page_32.h [POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero) 2008-04-24 20:58:01 +10:00
page_64.h powerpc: support multiple hugepage sizes 2008-07-24 10:47:19 -07:00
page.h PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
param.h
parport.h parport->dev driver model support 2007-05-08 11:15:05 -07:00
pasemi_dma.h pasemi_mac: jumbo frame support 2008-03-05 16:34:39 -06:00
pci-bridge.h powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata 2008-06-17 19:01:38 -04:00
pci.h [POWERPC] Merge PCI resource allocation & assignment 2007-12-20 16:18:09 +11:00
percpu.h percpu: fix DEBUG_PREEMPT per_cpu checking 2008-02-23 12:09:28 -08:00
pgalloc-32.h CONFIG_HIGHPTE vs. sub-page page tables. 2008-02-08 09:22:42 -08:00
pgalloc-64.h powerpc: support multiple hugepage sizes 2008-07-24 10:47:19 -07:00
pgalloc.h [POWERPC] Remove arch/powerpc's dependence on asm-ppc/pg{alloc,table}.h 2007-05-02 20:04:30 +10:00
pgtable-4k.h powerpc ioremap_prot 2008-07-24 10:47:15 -07:00
pgtable-64k.h powerpc: define support for 16G hugepages 2008-07-24 10:47:19 -07:00
pgtable-ppc32.h powerpc ioremap_prot 2008-07-24 10:47:15 -07:00
pgtable-ppc64.h powerpc ioremap_prot 2008-07-24 10:47:15 -07:00
pgtable.h [POWERPC] Start factoring pgtable-ppc32.h and pgtable-ppc64.h 2007-06-14 22:30:15 +10:00
phyp_dump.h [POWERPC] pseries/phyp dump: Reserve a variable amount of space at boot 2008-04-17 07:46:14 +10:00
pmac_feature.h [POWERPC] Disable G5 NAP mode during SMU commands on U3 2008-02-08 19:52:35 +11:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h powerpc/cell: Add support for power button of future IBM cell blades 2008-07-22 10:39:32 +10:00
poll.h Consolidate asm/poll.h 2007-05-11 08:29:34 -07:00
posix_types.h asm-*/posix_types.h: scrub __GLIBC__ 2008-02-08 09:22:34 -08:00
ppc4xx.h [POWERPC] 4xx: Create common ppc4xx_reset_system() in ppc4xx_soc.c 2008-04-02 20:44:56 -05:00
ppc_asm.h powerpc: Add VSX assembler code macros 2008-07-01 11:28:48 +10:00
ppc-pci.h [POWERPC] iSeries: Call iSeries_pcibios_init from setup_arch 2007-12-11 13:42:32 +11:00
processor.h powerpc: Implement task_pt_regs() accessor 2008-07-09 16:30:44 +10:00
prom.h powerpc: Implement OF PCI address accessors stubs for CONFIG_PCI=n 2008-06-30 22:30:51 +10:00
ps3.h powerpc/ps3: Add a sub-match id to ps3_system_bus 2008-07-22 10:39:33 +10:00
ps3av.h ps3: use symbolic names for video modes 2008-02-06 10:41:17 -08:00
ps3fb.h [POWERPC] PS3: Frame buffer system-bus rework 2007-06-28 19:16:42 +10:00
ps3stor.h [POWERPC] PS3: Storage Driver Core 2007-06-28 19:19:20 +10:00
pSeries_reconfig.h powerpc/pseries: Update the device tree correctly for drconf memory add/remove 2008-07-03 16:58:16 +10:00
ptrace.h powerpc: Add VSX context save/restore, ptrace and signal support 2008-07-01 11:28:50 +10:00
qe_ic.h [POWERPC] QEIC: Implement pluggable handlers, fix MPIC cascading 2007-10-08 08:38:57 -05:00
qe.h powerpc/QE: use arch_initcall to probe QUICC Engine GPIOs 2008-06-26 01:49:09 -05:00
reg_8xx.h
reg_booke.h powerpc/e500mc: flush L2 on NAP for e500mc 2008-06-26 01:49:03 -05:00
reg_fsl_emb.h [POWERPC] Made FSL Book-E PMC support more generic 2008-02-05 23:34:14 -06:00
reg.h powerpc/mpc83xx: Power Management support 2008-07-16 17:57:30 -05:00
resource.h
rheap.h [POWERPC] User rheap from arch/powerpc/lib 2007-05-09 23:28:17 -05:00
rio.h [RAPIDIO] Move include/asm-ppc/rio.h to asm-powerpc 2008-04-29 19:40:27 +10:00
rtas.h Revert "[POWERPC] Fix RTAS os-term usage on kernel panic" 2007-12-03 09:39:45 +11:00
rtc.h
rwsem.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
scatterlist.h Add CONFIG_DEBUG_SG sg validation 2007-10-22 21:20:03 +02:00
seccomp.h
sections.h
semaphore.h Generic semaphore implementation 2008-04-17 10:42:34 -04:00
sembuf.h
serial.h
setjmp.h [POWERPC] Make setjmp/longjmp code usable outside of xmon 2008-01-25 22:52:50 +11:00
setup.h
shmbuf.h
shmparam.h
sigcontext.h powerpc: Add VSX context save/restore, ptrace and signal support 2008-07-01 11:28:50 +10:00
siginfo.h
signal.h
smp.h Merge commit 'origin/master' 2008-07-16 11:07:59 +10:00
smu.h [POWERPC] include/asm-powerpc/: Spelling fixes 2007-12-20 16:17:44 +11:00
socket.h [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
sparsemem.h powerpc: Fix building of arch/powerpc/mm/mem.o when MEMORY_HOTPLUG=y and SPARSEMEM=n 2008-07-03 16:58:07 +10:00
spinlock_types.h
spinlock.h powerpc: Make sure that include/asm-powerpc/spinlock.h does not trigger compilation warnings 2008-07-01 11:29:00 +10:00
spu_csa.h powerpc/spufs: remove class_0_dsisr from spu exception handling 2008-06-16 14:35:00 +10:00
spu_info.h
spu_priv1.h [POWERPC] cell: wrap master run control bit 2007-12-21 19:45:05 +11:00
spu.h powerpc/spufs: add atomic busy_spus counter to struct cbe_spu_info 2008-07-09 16:30:42 +10:00
sstep.h
stat.h
statfs.h
string.h [POWERPC] Add hand-coded assembly strcmp 2008-04-07 10:03:03 +10:00
suspend.h [POWERPC] Fix suspend states again 2007-05-02 20:04:30 +10:00
synch.h powerpc: Fixup lwsync at runtime 2008-07-03 16:58:10 +10:00
syscalls.h unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
systbl.h [POWERPC] Wire up new timerfd syscalls 2008-02-14 22:11:01 +11:00
system.h powerpc: fix giveup_vsx to save registers correctly 2008-07-15 12:29:23 +10:00
tce.h
termbits.h [POWERPC] Enable arbitary speed tty ioctls and split input/output speed 2007-07-10 22:03:29 +10:00
termios.h
thread_info.h [POWERPC] Defer processing of interrupts when the CPU wakes from sleep mode 2008-05-16 23:22:28 +10:00
time.h [POWERPC] Fix sparse warnings in arch/powerpc/kernel 2008-05-14 22:31:59 +10:00
timex.h powerpc: Introduce infrastructure for feature sections with alternatives 2008-07-01 11:28:28 +10:00
tlb.h [POWERPC] Include pagemap.h in asm/powerpc/tlb.h 2007-10-03 12:02:43 +10:00
tlbflush.h [POWERPC] Fix oops related to 4xx flush_tlb_page modification 2007-11-09 03:51:14 -06:00
topology.h asm-generic: add node_to_cpumask_ptr macro 2008-04-19 19:44:58 +02:00
tsi108_irq.h [POWERPC] Change include protections to ASM_POWERPC 2007-05-17 21:10:15 +10:00
tsi108_pci.h [POWERPC] Change include protections to ASM_POWERPC 2007-05-17 21:10:15 +10:00
tsi108.h [POWERPC] Generalize tsi108 PCI setup 2007-05-08 11:54:20 +10:00
types.h powerpc: types: use <asm-generic/int-*.h> for the powerpc architecture 2008-05-02 16:18:35 -07:00
uaccess.h powerpc: Use PPC_LONG_ALIGN in uaccess.h 2008-07-22 10:39:35 +10:00
ucc_fast.h powerpc: Fix a bunch of sparse warnings in the qe_lib 2008-07-16 17:57:45 -05:00
ucc_slow.h [POWERPC] qe: miscellaneous code improvements and fixes to the QE library 2007-10-08 08:38:15 -05:00
ucc.h [POWERPC] qe: miscellaneous code improvements and fixes to the QE library 2007-10-08 08:38:15 -05:00
ucontext.h
udbg.h [POWERPC] 4xx: Add early udbg support for 40x processors 2007-12-23 13:13:03 -06:00
uic.h
unaligned.h kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
uninorth.h
unistd.h [POWERPC] Wire up new timerfd syscalls 2008-02-14 22:11:01 +11:00
user.h Sanitize the type of struct user.u_ar0 2008-02-07 08:42:30 -08:00
vdso_datapage.h [POWERPC] vdso: Fixes for cache block sizes 2007-11-20 13:56:31 +11:00
vdso.h
vga.h
vio.h [POWERPC] iSeries: Fix section mismatch in viodsasd 2008-02-06 16:30:00 +11:00
xilinx_intc.h [POWERPC] Virtex: add xilinx interrupt controller driver 2007-10-03 07:23:14 -05:00
xmon.h [POWERPC] Make cpus_in_xmon static and remove extern mess from hvc_console.c 2008-05-14 22:31:57 +10:00
xor.h