DEFINE(VM_EXEC,              VM_EXEC);
   BLANK();
   DEFINE(PAGE_SZ,              PAGE_SIZE);
-  DEFINE(VIRT_OFFSET,          PAGE_OFFSET);
   BLANK();
   DEFINE(SYS_ERROR0,           0x9f0000);
   BLANK();
 
  */
 #include <linux/config.h>
 
+#include <asm/memory.h>
 #include <asm/glue.h>
 #include <asm/vfpmacros.h>
 #include <asm/hardware.h>              /* should be moved into entry-macro.S */
 
 #if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
        @ make sure our user space atomic helper is aborted
-       cmp     r2, #VIRT_OFFSET
+       cmp     r2, #TASK_SIZE
        bichs   r3, r3, #PSR_Z_BIT
 #endif
 
 
 #include <asm/procinfo.h>
 #include <asm/ptrace.h>
 #include <asm/asm-offsets.h>
+#include <asm/memory.h>
 #include <asm/thread_info.h>
 #include <asm/system.h>
 
        .equ    swapper_pg_dir, DATAADDR - 0x4000
 
        .macro  pgtbl, rd, phys
-       ldr     \rd, =((DATAADDR - 0x4000) - VIRT_OFFSET)
+       ldr     \rd, =((DATAADDR - 0x4000) - PAGE_OFFSET)
        add     \rd, \rd, \phys
        .endm
 #endif
        /*
         * Then map first 1MB of ram in case it contains our boot params.
         */
-       add     r0, r4, #VIRT_OFFSET >> 18
+       add     r0, r4, #PAGE_OFFSET >> 18
        orr     r6, r5, r7
        str     r6, [r0]
 
 
 
 #include <linux/config.h>
 
-#define PHYS_OFFSET    (0xf0000000UL)
+#define PHYS_OFFSET    UL(0xf0000000)
 
 #define __virt_to_bus(x)       __virt_to_phys(x)
 #define __bus_to_virt(x)       __phys_to_virt(x)
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x10000000UL)
+#define PHYS_OFFSET    UL(0x10000000)
 
 /*
  * These are exactly the same on the RiscPC as the
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0xc0000000UL)
+#define PHYS_OFFSET    UL(0xc0000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x00000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
 
 /*
  * We keep this 1:1 so that we don't interfere
 
 #if defined(CONFIG_ARCH_FOOTBRIDGE)
 
 /* Task size and page offset at 3GB */
-#define TASK_SIZE              (0xbf000000UL)
-#define PAGE_OFFSET            (0xc0000000UL)
+#define TASK_SIZE              UL(0xbf000000)
+#define PAGE_OFFSET            UL(0xc0000000)
 
 #elif defined(CONFIG_ARCH_CO285)
 
 /* Task size and page offset at 1.5GB */
-#define TASK_SIZE              (0x5f000000UL)
-#define PAGE_OFFSET            (0x60000000UL)
+#define TASK_SIZE              UL(0x5f000000)
+#define PAGE_OFFSET            UL(0x60000000)
 
 #else
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET            (0x00000000UL)
+#define PHYS_OFFSET            UL(0x00000000)
 
 /*
  * This decides where the kernel will search for a free chunk of vm
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x00000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
  * Page offset:
  *    ( 0xc0000000UL )
  */
-#define PHYS_OFFSET    (0x40000000UL)
+#define PHYS_OFFSET    UL(0x40000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
 #ifndef __ASM_ARCH_MMU_H
 #define __ASM_ARCH_MMU_H
 
-#define PHYS_OFFSET    (0x08000000UL)
+#define PHYS_OFFSET    UL(0x08000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x00000000UL)
-#define BUS_OFFSET     (0x80000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
+#define BUS_OFFSET     UL(0x80000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
  * Physical DRAM offset.
  */
 #ifndef CONFIG_ARCH_IOP331
-#define PHYS_OFFSET    (0xa0000000UL)
+#define PHYS_OFFSET    UL(0xa0000000)
 #else
-#define PHYS_OFFSET    (0x00000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
 #endif
 
 /*
 
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET    (0x00000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x00000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
 
 #ifndef __ASSEMBLY__
 
 
 /*
  * Physical DRAM offset on the L7200 SDB.
  */
-#define PHYS_OFFSET     (0xf0000000UL)
+#define PHYS_OFFSET     UL(0xf0000000)
 
 #define __virt_to_bus(x) __virt_to_phys(x)
 #define __bus_to_virt(x) __phys_to_virt(x)
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0xc0000000UL)
+#define PHYS_OFFSET    UL(0xc0000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
  * Physical DRAM offset.
  */
 #if defined(CONFIG_ARCH_OMAP1)
-#define PHYS_OFFSET            (0x10000000UL)
+#define PHYS_OFFSET            UL(0x10000000)
 #elif defined(CONFIG_ARCH_OMAP2)
-#define PHYS_OFFSET            (0x80000000UL)
+#define PHYS_OFFSET            UL(0x80000000)
 #endif
 
 /*
 /*
  * OMAP-1510 Local Bus address offset
  */
-#define OMAP1510_LB_OFFSET     (0x30000000UL)
+#define OMAP1510_LB_OFFSET     UL(0x30000000)
 
 #define virt_to_lbus(x)                ((x) - PAGE_OFFSET + OMAP1510_LB_OFFSET)
 #define lbus_to_virt(x)                ((x) - OMAP1510_LB_OFFSET + PAGE_OFFSET)
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0xa0000000UL)
+#define PHYS_OFFSET    UL(0xa0000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x10000000UL)
+#define PHYS_OFFSET    UL(0x10000000)
 
 /*
  * These are exactly the same on the RiscPC as the
 
  * and at 0x0C000000 for S3C2400
  */
 #ifdef CONFIG_CPU_S3C2400
-#define PHYS_OFFSET    (0x0C000000UL)
+#define PHYS_OFFSET    UL(0x0C000000)
 #else
-#define PHYS_OFFSET    (0x30000000UL)
+#define PHYS_OFFSET    UL(0x30000000)
 #endif
 
 /*
 
 /*
  * Physical DRAM offset is 0xc0000000 on the SA1100
  */
-#define PHYS_OFFSET    (0xc0000000UL)
+#define PHYS_OFFSET    UL(0xc0000000)
 
 #ifndef __ASSEMBLY__
 
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET     (0x08000000UL)
+#define PHYS_OFFSET     UL(0x08000000)
 
 #ifndef __ASSEMBLY__
 
 
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET    (0x00000000UL)
+#define PHYS_OFFSET    UL(0x00000000)
 
 /*
  * Virtual view <-> DMA view memory address translations
 
 #ifndef __ASM_ARM_MEMORY_H
 #define __ASM_ARM_MEMORY_H
 
+/*
+ * Allow for constants defined here to be used from assembly code
+ * by prepending the UL suffix only with actual C code compilation.
+ */
+#ifndef __ASSEMBLY__
+#define UL(x) (x##UL)
+#else
+#define UL(x) (x)
+#endif
+
 #include <linux/config.h>
 #include <linux/compiler.h>
 #include <asm/arch/memory.h>
  * TASK_SIZE - the maximum size of a user space task.
  * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
  */
-#define TASK_SIZE              (0xbf000000UL)
-#define TASK_UNMAPPED_BASE     (0x40000000UL)
+#define TASK_SIZE              UL(0xbf000000)
+#define TASK_UNMAPPED_BASE     UL(0x40000000)
 #endif
 
 /*
  * The maximum size of a 26-bit user space task.
  */
-#define TASK_SIZE_26           (0x04000000UL)
+#define TASK_SIZE_26           UL(0x04000000)
 
 /*
  * Page offset: 3GB
  */
 #ifndef PAGE_OFFSET
-#define PAGE_OFFSET            (0xc0000000UL)
+#define PAGE_OFFSET            UL(0xc0000000)
 #endif
 
 /*