signal.o sysfs.o cacheinfo.o time.o \
                                   prom.o traps.o setup-common.o \
                                   udbg.o misc.o io.o dma.o \
-                                  misc_$(CONFIG_WORD_SIZE).o vdso32/ \
+                                  misc_$(CONFIG_WORD_SIZE).o \
                                   of_platform.o prom_parse.o
 obj-$(CONFIG_PPC64)            += setup_64.o sys_ppc32.o \
                                   signal_64.o ptrace32.o \
                                   paca.o nvram_64.o firmware.o
+obj-$(CONFIG_VDSO32)           += vdso32/
 obj-$(CONFIG_HAVE_HW_BREAKPOINT)       += hw_breakpoint.o
 obj-$(CONFIG_PPC_BOOK3S_64)    += cpu_setup_ppc970.o cpu_setup_pa6t.o
 obj-$(CONFIG_PPC_BOOK3S_64)    += cpu_setup_power.o
 
 /* The alignment of the vDSO */
 #define VDSO_ALIGNMENT (1 << 16)
 
-extern char vdso32_start, vdso32_end;
-static void *vdso32_kbase = &vdso32_start;
 static unsigned int vdso32_pages;
+static void *vdso32_kbase;
 static struct page **vdso32_pagelist;
 unsigned long vdso32_sigtramp;
 unsigned long vdso32_rt_sigtramp;
 
+#ifdef CONFIG_VDSO32
+extern char vdso32_start, vdso32_end;
+#endif
+
 #ifdef CONFIG_PPC64
 extern char vdso64_start, vdso64_end;
 static void *vdso64_kbase = &vdso64_start;
 
 
 
+#ifdef CONFIG_VDSO32
 static void * __init find_section32(Elf32_Ehdr *ehdr, const char *secname,
                                  unsigned long *size)
 {
 
        return 0;
 }
+#else /* !CONFIG_VDSO32 */
+static unsigned long __init find_function32(struct lib32_elfinfo *lib,
+                                           const char *symname)
+{
+       return 0;
+}
+
+static int __init vdso_do_func_patch32(struct lib32_elfinfo *v32,
+                                      struct lib64_elfinfo *v64,
+                                      const char *orig, const char *fix)
+{
+       return 0;
+}
+#endif /* CONFIG_VDSO32 */
 
 
 #ifdef CONFIG_PPC64
         * Locate symbol tables & text section
         */
 
+#ifdef CONFIG_VDSO32
        v32->dynsym = find_section32(v32->hdr, ".dynsym", &v32->dynsymsize);
        v32->dynstr = find_section32(v32->hdr, ".dynstr", NULL);
        if (v32->dynsym == NULL || v32->dynstr == NULL) {
                return -1;
        }
        v32->text = sect - vdso32_kbase;
+#endif
 
 #ifdef CONFIG_PPC64
        v64->dynsym = find_section64(v64->hdr, ".dynsym", &v64->dynsymsize);
 static __init int vdso_fixup_datapage(struct lib32_elfinfo *v32,
                                       struct lib64_elfinfo *v64)
 {
+#ifdef CONFIG_VDSO32
        Elf32_Sym *sym32;
+#endif
 #ifdef CONFIG_PPC64
        Elf64_Sym *sym64;
 
                (sym64->st_value - VDSO64_LBASE);
 #endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_VDSO32
        sym32 = find_symbol32(v32, "__kernel_datapage_offset");
        if (sym32 == NULL) {
                printk(KERN_ERR "vDSO32: Can't find symbol "
        *((int *)(vdso32_kbase + (sym32->st_value - VDSO32_LBASE))) =
                (vdso32_pages << PAGE_SHIFT) -
                (sym32->st_value - VDSO32_LBASE);
+#endif
 
        return 0;
 }
                                 start, start + size);
 #endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_VDSO32
        start = find_section32(v32->hdr, "__ftr_fixup", &size);
        if (start)
                do_feature_fixups(cur_cpu_spec->cpu_features,
        if (start)
                do_lwsync_fixups(cur_cpu_spec->cpu_features,
                                 start, start + size);
+#endif
 
        return 0;
 }
 #endif /* CONFIG_PPC64 */
 
 
+#ifdef CONFIG_VDSO32
+       vdso32_kbase = &vdso32_start;
+
        /*
         * Calculate the size of the 32 bits vDSO
         */
        vdso32_pages = (&vdso32_end - &vdso32_start) >> PAGE_SHIFT;
        DBG("vdso32_kbase: %p, 0x%x pages\n", vdso32_kbase, vdso32_pages);
+#endif
 
 
        /*
                return 0;
        }
 
+#ifdef CONFIG_VDSO32
        /* Make sure pages are in the correct state */
        vdso32_pagelist = kzalloc(sizeof(struct page *) * (vdso32_pages + 2),
                                  GFP_KERNEL);
        }
        vdso32_pagelist[i++] = virt_to_page(vdso_data);
        vdso32_pagelist[i] = NULL;
+#endif
 
 #ifdef CONFIG_PPC64
        vdso64_pagelist = kzalloc(sizeof(struct page *) * (vdso64_pages + 2),