All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] Add __global tag where needed.
Date: Thu, 24 Aug 2006 16:26:52 +0100	[thread overview]
Message-ID: <1156433212.3012.120.camel@pmac.infradead.org> (raw)
In-Reply-To: <1156429585.3012.58.camel@pmac.infradead.org>

This patch just adds the __global tag to functions and variables which
are used from outside the directory in which they're provided, to
prevent -fwhole-program from eating them.

If we just define __global as a dummy for now, then there's no harm in
applying this patch as-is -- but it's largely pointless without the
Makefile changes.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>

diff --git a/arch/i386/mm/extable.c b/arch/i386/mm/extable.c
index de03c54..68a2409 100644
--- a/arch/i386/mm/extable.c
+++ b/arch/i386/mm/extable.c
@@ -6,7 +6,7 @@ #include <linux/module.h>
 #include <linux/spinlock.h>
 #include <asm/uaccess.h>
 
-int fixup_exception(struct pt_regs *regs)
+int __global fixup_exception(struct pt_regs *regs)
 {
 	const struct exception_table_entry *fixup;
 
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c
index f727946..f8f90b2 100644
--- a/arch/i386/mm/fault.c
+++ b/arch/i386/mm/fault.c
@@ -32,13 +32,13 @@ extern void die(const char *,struct pt_r
 
 #ifdef CONFIG_KPROBES
 ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain);
-int register_page_fault_notifier(struct notifier_block *nb)
+int __global register_page_fault_notifier(struct notifier_block *nb)
 {
 	vmalloc_sync_all();
 	return atomic_notifier_chain_register(&notify_page_fault_chain, nb);
 }
 
-int unregister_page_fault_notifier(struct notifier_block *nb)
+int __global unregister_page_fault_notifier(struct notifier_block *nb)
 {
 	return atomic_notifier_chain_unregister(&notify_page_fault_chain, nb);
 }
@@ -325,8 +325,8 @@ static inline int vmalloc_fault(unsigned
  *	bit 3 == 1 means use of reserved bit detected
  *	bit 4 == 1 means fault was an instruction fetch
  */
-fastcall void __kprobes do_page_fault(struct pt_regs *regs,
-				      unsigned long error_code)
+fastcall void __kprobes __global do_page_fault(struct pt_regs *regs,
+					       unsigned long error_code)
 {
 	struct task_struct *tsk;
 	struct mm_struct *mm;
@@ -626,7 +626,7 @@ do_sigbus:
 }
 
 #ifndef CONFIG_X86_PAE
-void vmalloc_sync_all(void)
+void __global vmalloc_sync_all(void)
 {
 	/*
 	 * Note that races in the updates of insync and start aren't
diff --git a/arch/i386/mm/hugetlbpage.c b/arch/i386/mm/hugetlbpage.c
index 1719a81..2820b17 100644
--- a/arch/i386/mm/hugetlbpage.c
+++ b/arch/i386/mm/hugetlbpage.c
@@ -17,7 +17,7 @@ #include <asm/mman.h>
 #include <asm/tlb.h>
 #include <asm/tlbflush.h>
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
+pte_t * __global huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
 {
 	pgd_t *pgd;
 	pud_t *pud;
@@ -32,7 +32,7 @@ pte_t *huge_pte_alloc(struct mm_struct *
 	return pte;
 }
 
-pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
+pte_t * __global huge_pte_offset(struct mm_struct *mm, unsigned long addr)
 {
 	pgd_t *pgd;
 	pud_t *pud;
@@ -48,7 +48,7 @@ pte_t *huge_pte_offset(struct mm_struct 
 }
 
 #if 0	/* This is just for testing */
-struct page *
+struct page * __global
 follow_huge_addr(struct mm_struct *mm, unsigned long address, int write)
 {
 	unsigned long start = address;
@@ -87,18 +87,18 @@ follow_huge_pmd(struct mm_struct *mm, un
 
 #else
 
-struct page *
+struct page * __global
 follow_huge_addr(struct mm_struct *mm, unsigned long address, int write)
 {
 	return ERR_PTR(-EINVAL);
 }
 
-int pmd_huge(pmd_t pmd)
+int __global pmd_huge(pmd_t pmd)
 {
 	return !!(pmd_val(pmd) & _PAGE_PSE);
 }
 
-struct page *
+struct page * __global
 follow_huge_pmd(struct mm_struct *mm, unsigned long address,
 		pmd_t *pmd, int write)
 {
@@ -245,7 +245,7 @@ fail:
 	return addr;
 }
 
-unsigned long
+unsigned long __global
 hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
 		unsigned long len, unsigned long pgoff, unsigned long flags)
 {
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c
index 89e8486..89661e2 100644
--- a/arch/i386/mm/init.c
+++ b/arch/i386/mm/init.c
@@ -43,9 +43,9 @@ #include <asm/tlb.h>
 #include <asm/tlbflush.h>
 #include <asm/sections.h>
 
-unsigned int __VMALLOC_RESERVE = 128 << 20;
+unsigned int __global __VMALLOC_RESERVE = 128 << 20;
 
-DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
+__global DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 unsigned long highstart_pfn, highend_pfn;
 
 static int noinline do_test_wp_bit(void);
@@ -329,7 +329,7 @@ #endif /* CONFIG_HIGHMEM */
 
 unsigned long long __PAGE_KERNEL = _PAGE_KERNEL;
 EXPORT_SYMBOL(__PAGE_KERNEL);
-unsigned long long __PAGE_KERNEL_EXEC = _PAGE_KERNEL_EXEC;
+unsigned long long __global __PAGE_KERNEL_EXEC = _PAGE_KERNEL_EXEC;
 
 #ifdef CONFIG_NUMA
 extern void __init remap_numa_kva(void);
@@ -390,7 +390,7 @@ #if defined(CONFIG_SOFTWARE_SUSPEND) || 
  * Swap suspend & friends need this for resume because things like the intel-agp
  * driver might have split up a kernel 4MB mapping.
  */
-char __nosavedata swsusp_pg_dir[PAGE_SIZE]
+char __nosavedata __global swsusp_pg_dir[PAGE_SIZE]
 	__attribute__ ((aligned (PAGE_SIZE)));
 
 static inline void save_pg_dir(void)
@@ -435,7 +435,7 @@ u64 __supported_pte_mask __read_mostly =
  * on      Enable
  * off     Disable
  */
-void __init noexec_setup(const char *str)
+void __init __global noexec_setup(const char *str)
 {
 	if (!strncmp(str, "on",2) && cpu_has_nx) {
 		__supported_pte_mask |= _PAGE_NX;
@@ -446,7 +446,7 @@ void __init noexec_setup(const char *str
 	}
 }
 
-int nx_enabled = 0;
+int __global nx_enabled = 0;
 #ifdef CONFIG_X86_PAE
 
 static void __init set_nx(void)
@@ -501,7 +501,7 @@ #endif
  * This routines also unmaps the page at virtual kernel address 0, so
  * that we can trap those pesky NULL-reference errors in the kernel.
  */
-void __init paging_init(void)
+void __init __global paging_init(void)
 {
 #ifdef CONFIG_X86_PAE
 	set_nx();
@@ -566,7 +566,7 @@ #endif
 
 static struct kcore_list kcore_mem, kcore_vmalloc; 
 
-void __init mem_init(void)
+void __init __global mem_init(void)
 {
 	extern int ppro_with_ram_bug(void);
 	int codesize, reservedpages, datasize, initsize;
@@ -674,7 +674,7 @@ #endif
 kmem_cache_t *pgd_cache;
 kmem_cache_t *pmd_cache;
 
-void __init pgtable_cache_init(void)
+void __init __global pgtable_cache_init(void)
 {
 	if (PTRS_PER_PMD > 1) {
 		pmd_cache = kmem_cache_create("pmd",
@@ -725,7 +725,7 @@ static int noinline do_test_wp_bit(void)
 
 #ifdef CONFIG_DEBUG_RODATA
 
-void mark_rodata_ro(void)
+void __global mark_rodata_ro(void)
 {
 	unsigned long addr = (unsigned long)__start_rodata;
 
@@ -745,7 +745,7 @@ void mark_rodata_ro(void)
 }
 #endif
 
-void free_init_pages(char *what, unsigned long begin, unsigned long end)
+void __global free_init_pages(char *what, unsigned long begin, unsigned long end)
 {
 	unsigned long addr;
 
@@ -759,7 +759,7 @@ void free_init_pages(char *what, unsigne
 	printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
 }
 
-void free_initmem(void)
+void __global free_initmem(void)
 {
 	free_init_pages("unused kernel memory",
 			(unsigned long)(&__init_begin),
@@ -767,7 +767,7 @@ void free_initmem(void)
 }
 
 #ifdef CONFIG_BLK_DEV_INITRD
-void free_initrd_mem(unsigned long start, unsigned long end)
+void __global free_initrd_mem(unsigned long start, unsigned long end)
 {
 	free_init_pages("initrd memory", start, end);
 }
diff --git a/arch/i386/mm/ioremap.c b/arch/i386/mm/ioremap.c
index 247fde7..5340869 100644
--- a/arch/i386/mm/ioremap.c
+++ b/arch/i386/mm/ioremap.c
@@ -280,7 +280,7 @@ void iounmap(volatile void __iomem *addr
 }
 EXPORT_SYMBOL(iounmap);
 
-void __init *bt_ioremap(unsigned long phys_addr, unsigned long size)
+void __init __global *bt_ioremap(unsigned long phys_addr, unsigned long size)
 {
 	unsigned long offset, last_addr;
 	unsigned int nrpages;
@@ -324,7 +324,7 @@ void __init *bt_ioremap(unsigned long ph
 	return (void*) (offset + fix_to_virt(FIX_BTMAP_BEGIN));
 }
 
-void __init bt_iounmap(void *addr, unsigned long size)
+void __init __global bt_iounmap(void *addr, unsigned long size)
 {
 	unsigned long virt_addr;
 	unsigned long offset;
diff --git a/arch/i386/mm/mmap.c b/arch/i386/mm/mmap.c
index e4730a1..ec8f27e 100644
--- a/arch/i386/mm/mmap.c
+++ b/arch/i386/mm/mmap.c
@@ -56,7 +56,7 @@ static inline unsigned long mmap_base(st
  * This function, called very early during the creation of a new
  * process VM image, sets up which VM layout function to use:
  */
-void arch_pick_mmap_layout(struct mm_struct *mm)
+void __global arch_pick_mmap_layout(struct mm_struct *mm)
 {
 	/*
 	 * Fall back to the standard layout if the personality
diff --git a/arch/i386/mm/pgtable.c b/arch/i386/mm/pgtable.c
index bd98768..6161dd9 100644
--- a/arch/i386/mm/pgtable.c
+++ b/arch/i386/mm/pgtable.c
@@ -21,7 +21,7 @@ #include <asm/e820.h>
 #include <asm/tlb.h>
 #include <asm/tlbflush.h>
 
-void show_mem(void)
+void __global show_mem(void)
 {
 	int total = 0, reserved = 0;
 	int shared = 0, cached = 0;
@@ -137,7 +137,7 @@ void set_pmd_pfn(unsigned long vaddr, un
 	__flush_tlb_one(vaddr);
 }
 
-void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
+void __global __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
 {
 	unsigned long address = __fix_to_virt(idx);
 
@@ -148,12 +148,12 @@ void __set_fixmap (enum fixed_addresses 
 	set_pte_pfn(address, phys >> PAGE_SHIFT, flags);
 }
 
-pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
+pte_t * __global pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
 {
 	return (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
 }
 
-struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
+struct page * __global pte_alloc_one(struct mm_struct *mm, unsigned long address)
 {
 	struct page *pte;
 
@@ -234,7 +234,7 @@ void pgd_dtor(void *pgd, kmem_cache_t *c
 	spin_unlock_irqrestore(&pgd_lock, flags);
 }
 
-pgd_t *pgd_alloc(struct mm_struct *mm)
+pgd_t * __global pgd_alloc(struct mm_struct *mm)
 {
 	int i;
 	pgd_t *pgd = kmem_cache_alloc(pgd_cache, GFP_KERNEL);
@@ -257,7 +257,7 @@ out_oom:
 	return NULL;
 }
 
-void pgd_free(pgd_t *pgd)
+void __global pgd_free(pgd_t *pgd)
 {
 	int i;
 
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c
index ebf961f..d6f5437 100644
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -1056,7 +1056,7 @@ pmac_ide_get_irq(unsigned long base)
 
 static int ide_majors[] = { 3, 22, 33, 34, 56, 57 };
 
-dev_t __init
+dev_t __init __global
 pmac_find_ide_boot(char *bootdevice, int n)
 {
 	int i;
diff --git a/drivers/md/md.c b/drivers/md/md.c
index b6d1602..11cc13a 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2887,7 +2887,7 @@ static struct kobj_type md_ktype = {
 	.default_attrs	= md_default_attrs,
 };
 
-int mdp_major = 0;
+int __global mdp_major = 0;
 
 static struct kobject *md_probe(dev_t dev, int *part, void *data)
 {
@@ -5578,13 +5578,12 @@ #ifndef MODULE
 static dev_t detected_devices[128];
 static int dev_cnt;
 
-void md_autodetect_dev(dev_t dev)
+void __global md_autodetect_dev(dev_t dev)
 {
 	if (dev_cnt >= 0 && dev_cnt < 127)
 		detected_devices[dev_cnt++] = dev;
 }
 
-
 static void autostart_arrays(int part)
 {
 	mdk_rdev_t *rdev;
diff --git a/drivers/video/fbcvt.c b/drivers/video/fbcvt.c
index b549899..baac324 100644
--- a/drivers/video/fbcvt.c
+++ b/drivers/video/fbcvt.c
@@ -301,7 +301,7 @@ static void fb_cvt_convert_to_mode(struc
  * DESCRIPTION:
  * Computes video timings using VESA(TM) Coordinated Video Timings
  */
-int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb)
+int __global fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb)
 {
 	struct fb_cvt_data cvt;
 
diff --git a/fs/aio.c b/fs/aio.c
index 9506301..3290a73 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -42,8 +42,8 @@ #endif
 
 /*------ sysctl variables----*/
 static DEFINE_SPINLOCK(aio_nr_lock);
-unsigned long aio_nr;		/* current system wide number of aio requests */
-unsigned long aio_max_nr = 0x10000; /* system wide maximum number of aio requests */
+unsigned long __global aio_nr;		/* current system wide number of aio requests */
+unsigned long __global aio_max_nr = 0x10000; /* system wide maximum number of aio requests */
 /*----end sysctl variables---*/
 
 static kmem_cache_t	*kiocb_cachep;
@@ -332,7 +332,7 @@ ssize_t fastcall wait_on_sync_kiocb(stru
  * go away, they will call put_ioctx and release any pinned memory
  * associated with the request (held via struct page * references).
  */
-void fastcall exit_aio(struct mm_struct *mm)
+void fastcall __global exit_aio(struct mm_struct *mm)
 {
 	struct kioctx *ctx = mm->ioctx_list;
 	mm->ioctx_list = NULL;
diff --git a/fs/bio.c b/fs/bio.c
index 6a0b9ad..049afc4 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -745,9 +746,9 @@ struct bio *bio_map_user(request_queue_t
  *	Map the user space address into a bio suitable for io to a block
  *	device. Returns an error pointer in case of error.
  */
-struct bio *bio_map_user_iov(request_queue_t *q, struct block_device *bdev,
-			     struct sg_iovec *iov, int iov_count,
-			     int write_to_vm)
+struct bio * __global bio_map_user_iov(request_queue_t *q, struct block_device *bdev,
+				       struct sg_iovec *iov, int iov_count,
+				       int write_to_vm)
 {
 	struct bio *bio;
 	int len = 0, i;
@@ -917,7 +918,7 @@ struct bio *bio_map_kern(request_queue_t
 /*
  * bio_set_pages_dirty() will mark all the bio's pages as dirty.
  */
-void bio_set_pages_dirty(struct bio *bio)
+void __global bio_set_pages_dirty(struct bio *bio)
 {
 	struct bio_vec *bvec = bio->bi_io_vec;
 	int i;
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 3753457..de38fb4 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -388,7 +388,7 @@ struct block_device *bdget(dev_t dev)
 
 EXPORT_SYMBOL(bdget);
 
-long nr_blockdev_pages(void)
+long __global nr_blockdev_pages(void)
 {
 	struct list_head *p;
 	long ret = 0;
diff --git a/fs/buffer.c b/fs/buffer.c
index 71649ef..4073846 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -284,7 +284,7 @@ asmlinkage long sys_sync(void)
 	return 0;
 }
 
-void emergency_sync(void)
+void __global emergency_sync(void)
 {
 	pdflush_operation(do_sync, 0);
 }
@@ -318,7 +318,7 @@ int file_fsync(struct file *filp, struct
 	return ret;
 }
 
-long do_fsync(struct file *file, int datasync)
+long __global do_fsync(struct file *file, int datasync)
 {
 	int ret;
 	int err;
@@ -1630,7 +1630,7 @@ out:
 }
 EXPORT_SYMBOL(block_invalidatepage);
 
-void do_invalidatepage(struct page *page, unsigned long offset)
+void __global do_invalidatepage(struct page *page, unsigned long offset)
 {
 	void (*invalidatepage)(struct page *, unsigned long);
 	invalidatepage = page->mapping->a_ops->invalidatepage ? :
@@ -3061,7 +3061,7 @@ static kmem_cache_t *bh_cachep;
  */
 static int max_buffer_heads;
 
-int buffer_heads_over_limit;
+int __global buffer_heads_over_limit;
 
 struct bh_accounting {
 	int nr;			/* Number of live bh's */
@@ -3141,7 +3141,7 @@ static int buffer_cpu_notify(struct noti
 }
 #endif /* CONFIG_HOTPLUG_CPU */
 
-void __init buffer_init(void)
+void __init __global buffer_init(void)
 {
 	int nrpages;
 
diff --git a/fs/char_dev.c b/fs/char_dev.c
index 3483d3c..236a7d1 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -46,7 +46,7 @@ static inline int major_to_index(int maj
 
 #ifdef CONFIG_PROC_FS
 
-void chrdev_show(struct seq_file *f, off_t offset)
+void __global chrdev_show(struct seq_file *f, off_t offset)
 {
 	struct char_device_struct *cd;
 
diff --git a/fs/compat.c b/fs/compat.c
index e31e9cf..b635d8f 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -55,7 +55,7 @@ #include <asm/ioctls.h>
 
 extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat);
 
-int compat_log = 1;
+int __global compat_log = 1;
 
 int compat_printk(const char *fmt, ...)
 {
@@ -1503,7 +1503,7 @@ #endif /* CONFIG_MMU */
  * compat_do_execve() is mostly a copy of do_execve(), with the exception
  * that it processes 32 bit argv and envp pointers.
  */
-int compat_do_execve(char * filename,
+int __global compat_do_execve(char * filename,
 	compat_uptr_t __user *argv,
 	compat_uptr_t __user *envp,
 	struct pt_regs * regs)
diff --git a/fs/dcache.c b/fs/dcache.c
index 1b4a3a3..c9e20bb 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -63,7 +63,7 @@ static struct hlist_head *dentry_hashtab
 static LIST_HEAD(dentry_unused);
 
 /* Statistics gathering. */
-struct dentry_stat_t dentry_stat = {
+struct dentry_stat_t __global dentry_stat = {
 	.age_limit = 45,
 };
 
@@ -1120,7 +1120,7 @@ next:
  *
  * On hash failure or on lookup failure NULL is returned.
  */
-struct dentry *d_hash_and_lookup(struct dentry *dir, struct qstr *name)
+struct dentry * __global d_hash_and_lookup(struct dentry *dir, struct qstr *name)
 {
 	struct dentry *dentry = NULL;
 
@@ -1745,13 +1745,13 @@ EXPORT_SYMBOL(d_genocide);
 extern void bdev_cache_init(void);
 extern void chrdev_init(void);
 
-void __init vfs_caches_init_early(void)
+void __init __global vfs_caches_init_early(void)
 {
 	dcache_init_early();
 	inode_init_early();
 }
 
-void __init vfs_caches_init(unsigned long mempages)
+void __init __global vfs_caches_init(unsigned long mempages)
 {
 	unsigned long reserve;
 
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index f7aef5b..3b9f019 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -156,7 +156,7 @@ static struct dentry *get_node(int num)
 	return lookup_one_len(s, root, sprintf(s, "%d", num));
 }
 
-int devpts_pty_new(struct tty_struct *tty)
+int __global devpts_pty_new(struct tty_struct *tty)
 {
 	int number = tty->index;
 	struct tty_driver *driver = tty->driver;
@@ -188,7 +188,7 @@ int devpts_pty_new(struct tty_struct *tt
 	return 0;
 }
 
-struct tty_struct *devpts_get_tty(int number)
+struct tty_struct * __global devpts_get_tty(int number)
 {
 	struct dentry *dentry = get_node(number);
 	struct tty_struct *tty;
@@ -205,7 +205,7 @@ struct tty_struct *devpts_get_tty(int nu
 	return tty;
 }
 
-void devpts_pty_kill(int number)
+void __global devpts_pty_kill(int number)
 {
 	struct dentry *dentry = get_node(number);
 
diff --git a/fs/dnotify.c b/fs/dnotify.c
index f932591..c6c7ae3 100644
--- a/fs/dnotify.c
+++ b/fs/dnotify.c
@@ -21,7 +21,7 @@ #include <linux/init.h>
 #include <linux/spinlock.h>
 #include <linux/slab.h>
 
-int dir_notify_enable __read_mostly = 1;
+int dir_notify_enable __global __read_mostly = 1;
 
 static kmem_cache_t *dn_cache __read_mostly;
 
diff --git a/fs/drop_caches.c b/fs/drop_caches.c
index 4e47623..dfc591b 100644
--- a/fs/drop_caches.c
+++ b/fs/drop_caches.c
@@ -10,7 +10,7 @@ #include <linux/sysctl.h>
 #include <linux/gfp.h>
 
 /* A global variable is a bit ugly, but it keeps the code simple */
-int sysctl_drop_caches;
+int __global sysctl_drop_caches;
 
 static void drop_pagecache_sb(struct super_block *sb)
 {
@@ -54,7 +54,7 @@ void drop_slab(void)
 	} while (nr_objects > 10);
 }
 
-int drop_caches_sysctl_handler(ctl_table *table, int write,
+int __global drop_caches_sysctl_handler(ctl_table *table, int write,
 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
 {
 	proc_dointvec_minmax(table, write, file, buffer, length, ppos);
diff --git a/fs/exec.c b/fs/exec.c
index 8344ba7..d14f122 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -57,8 +57,8 @@ #ifdef CONFIG_KMOD
 #include <linux/kmod.h>
 #endif
 
-int core_uses_pid;
-char core_pattern[65] = "core";
+int __global core_uses_pid;
+char __global core_pattern[65] = "core";
 int suid_dumpable = 0;
 
 EXPORT_SYMBOL(suid_dumpable);
@@ -805,7 +805,7 @@ static void flush_old_files(struct files
 	spin_unlock(&files->file_lock);
 }
 
-void get_task_comm(char *buf, struct task_struct *tsk)
+void __global get_task_comm(char *buf, struct task_struct *tsk)
 {
 	/* buf must be at least sizeof(tsk->comm) in size */
 	task_lock(tsk);
@@ -813,7 +813,7 @@ void get_task_comm(char *buf, struct tas
 	task_unlock(tsk);
 }
 
-void set_task_comm(struct task_struct *tsk, char *buf)
+void __global set_task_comm(struct task_struct *tsk, char *buf)
 {
 	task_lock(tsk);
 	strlcpy(tsk->comm, buf, sizeof(tsk->comm));
@@ -1131,7 +1131,7 @@ EXPORT_SYMBOL(search_binary_handler);
 /*
  * sys_execve() executes a new program.
  */
-int do_execve(char * filename,
+int __global do_execve(char * filename,
 	char __user *__user *argv,
 	char __user *__user *envp,
 	struct pt_regs * regs)
@@ -1465,7 +1465,7 @@ fail:
 	return core_waiters;
 }
 
-int do_coredump(long signr, int exit_code, struct pt_regs * regs)
+int __global do_coredump(long signr, int exit_code, struct pt_regs * regs)
 {
 	char corename[CORENAME_MAX_SIZE + 1];
 	struct mm_struct *mm = current->mm;
diff --git a/fs/fcntl.c b/fs/fcntl.c
index d35cbc6..5f1c0eb 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -23,7 +23,7 @@ #include <asm/poll.h>
 #include <asm/siginfo.h>
 #include <asm/uaccess.h>
 
-void fastcall set_close_on_exec(unsigned int fd, int flag)
+void fastcall __global set_close_on_exec(unsigned int fd, int flag)
 {
 	struct files_struct *files = current->files;
 	struct fdtable *fdt;
@@ -467,7 +467,7 @@ static void send_sigio_to_task(struct ta
 	}
 }
 
-void send_sigio(struct fown_struct *fown, int fd, int band)
+void __global send_sigio(struct fown_struct *fown, int fd, int band)
 {
 	struct task_struct *p;
 	int pid;
@@ -500,7 +500,7 @@ static void send_sigurg_to_task(struct t
 		group_send_sig_info(SIGURG, SEND_SIG_PRIV, p);
 }
 
-int send_sigurg(struct fown_struct *fown)
+int __global send_sigurg(struct fown_struct *fown)
 {
 	struct task_struct *p;
 	int pid, ret = 0;
diff --git a/fs/file.c b/fs/file.c
index b3c6b82..af0fff5 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -50,7 +50,7 @@ struct file ** alloc_fd_array(int num)
 	return new_fds;
 }
 
-void free_fd_array(struct file **array, int num)
+void __global free_fd_array(struct file **array, int num)
 {
 	int size = num * sizeof(struct file *);
 
@@ -154,7 +154,7 @@ static void free_fdtable_rcu(struct rcu_
 	}
 }
 
-void free_fdtable(struct fdtable *fdt)
+void __global free_fdtable(struct fdtable *fdt)
 {
 	if (fdt->free_files ||
 		fdt->max_fdset > EMBEDDED_FD_SET_SIZE ||
@@ -219,7 +219,7 @@ fd_set * alloc_fdset(int num)
 	return new_fdset;
 }
 
-void free_fdset(fd_set *array, int num)
+void __global free_fdset(fd_set *array, int num)
 {
 	if (num <= EMBEDDED_FD_SET_SIZE) /* Don't free an embedded fdset */
 		return;
@@ -336,7 +336,7 @@ out:
  * Return <0 on error; 0 nothing done; 1 files expanded, we may have blocked.
  * Should be called with the files->file_lock spinlock held for write.
  */
-int expand_files(struct files_struct *files, int nr)
+int __global expand_files(struct files_struct *files, int nr)
 {
 	int err, expand = 0;
 	struct fdtable *fdt;
diff --git a/fs/file_table.c b/fs/file_table.c
index 0131ba0..3e795f3 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -25,12 +25,12 @@ #include <linux/percpu_counter.h>
 #include <asm/atomic.h>
 
 /* sysctl tunables... */
-struct files_stat_struct files_stat = {
+struct files_stat_struct __global files_stat = {
 	.max_files = NR_FILE
 };
 
 /* public. Not pretty! */
-__cacheline_aligned_in_smp DEFINE_SPINLOCK(files_lock);
+__global __cacheline_aligned_in_smp DEFINE_SPINLOCK(files_lock);
 
 static struct percpu_counter nr_files __cacheline_aligned_in_smp;
 
@@ -67,14 +67,14 @@ EXPORT_SYMBOL_GPL(get_max_files);
  * Handle nr_files sysctl
  */
 #if defined(CONFIG_SYSCTL) && defined(CONFIG_PROC_FS)
-int proc_nr_files(ctl_table *table, int write, struct file *filp,
+int __global proc_nr_files(ctl_table *table, int write, struct file *filp,
                      void __user *buffer, size_t *lenp, loff_t *ppos)
 {
 	files_stat.nr_files = get_nr_files();
 	return proc_dointvec(table, write, filp, buffer, lenp, ppos);
 }
 #else
-int proc_nr_files(ctl_table *table, int write, struct file *filp,
+int __global proc_nr_files(ctl_table *table, int write, struct file *filp,
                      void __user *buffer, size_t *lenp, loff_t *ppos)
 {
 	return -ENOSYS;
@@ -210,7 +210,7 @@ EXPORT_SYMBOL(fget);
  * and a flag is returned to be passed to the corresponding fput_light().
  * There must not be a cloning between an fget_light/fput_light pair.
  */
-struct file fastcall *fget_light(unsigned int fd, int *fput_needed)
+struct file fastcall * __global fget_light(unsigned int fd, int *fput_needed)
 {
 	struct file *file;
 	struct files_struct *files = current->files;
@@ -235,7 +235,7 @@ struct file fastcall *fget_light(unsigne
 }
 
 
-void put_filp(struct file *file)
+void __global put_filp(struct file *file)
 {
 	if (atomic_dec_and_test(&file->f_count)) {
 		security_file_free(file);
@@ -244,7 +244,7 @@ void put_filp(struct file *file)
 	}
 }
 
-void file_move(struct file *file, struct list_head *list)
+void __global file_move(struct file *file, struct list_head *list)
 {
 	if (!list)
 		return;
@@ -253,7 +253,7 @@ void file_move(struct file *file, struct
 	file_list_unlock();
 }
 
-void file_kill(struct file *file)
+void __global file_kill(struct file *file)
 {
 	if (!list_empty(&file->f_u.fu_list)) {
 		file_list_lock();
diff --git a/fs/filesystems.c b/fs/filesystems.c
index 9f10728..2b338c6 100644
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -198,7 +198,7 @@ asmlinkage long sys_sysfs(int option, un
 	return retval;
 }
 
-int get_filesystem_list(char * buf)
+int __global get_filesystem_list(char * buf)
 {
 	int len = 0;
 	struct file_system_type * tmp;
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 892643d..c3a2e2b 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -409,7 +409,7 @@ sync_sb_inodes(struct super_block *sb, s
  * sync_sb_inodes will seekout the blockdev which matches `bdi'.  Maybe not
  * super-efficient but we're about to do a ton of I/O...
  */
-void
+void __global
 writeback_inodes(struct writeback_control *wbc)
 {
 	struct super_block *sb;
@@ -678,7 +678,7 @@ int writeback_acquire(struct backing_dev
  *
  * Determine whether there is writeback in progress against a backing device.
  */
-int writeback_in_progress(struct backing_dev_info *bdi)
+int __global writeback_in_progress(struct backing_dev_info *bdi)
 {
 	return test_bit(BDI_pdflush, &bdi->state);
 }
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index c3920c9..5062ca1 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -44,7 +44,7 @@ static struct backing_dev_info hugetlbfs
 	.capabilities	= BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK,
 };
 
-int sysctl_hugetlb_shm_group;
+int __global sysctl_hugetlb_shm_group;
 
 static void huge_pagevec_release(struct pagevec *pvec)
 {
@@ -562,7 +562,7 @@ static void init_once(void *foo, kmem_ca
 		inode_init_once(&ei->vfs_inode);
 }
 
-const struct file_operations hugetlbfs_file_operations = {
+const __global struct file_operations hugetlbfs_file_operations = {
 	.mmap			= hugetlbfs_file_mmap,
 	.fsync			= simple_sync_file,
 	.get_unmapped_area	= hugetlb_get_unmapped_area,
@@ -691,7 +691,7 @@ out_free:
 	return -ENOMEM;
 }
 
-int hugetlb_get_quota(struct address_space *mapping)
+int __global hugetlb_get_quota(struct address_space *mapping)
 {
 	int ret = 0;
 	struct hugetlbfs_sb_info *sbinfo = HUGETLBFS_SB(mapping->host->i_sb);
@@ -708,7 +708,7 @@ int hugetlb_get_quota(struct address_spa
 	return ret;
 }
 
-void hugetlb_put_quota(struct address_space *mapping)
+void __global hugetlb_put_quota(struct address_space *mapping)
 {
 	struct hugetlbfs_sb_info *sbinfo = HUGETLBFS_SB(mapping->host->i_sb);
 
@@ -740,7 +740,7 @@ static int can_do_hugetlb_shm(void)
 			can_do_mlock());
 }
 
-struct file *hugetlb_zero_setup(size_t size)
+struct file * __global hugetlb_zero_setup(size_t size)
 {
 	int error = -ENOMEM;
 	struct file *file;
diff --git a/fs/inode.c b/fs/inode.c
index 0bf9f04..0ed00e2 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -71,7 +71,7 @@ static unsigned int i_hash_shift __read_
  */
 
 LIST_HEAD(inode_in_use);
-LIST_HEAD(inode_unused);
+__global LIST_HEAD(inode_unused);
 static struct hlist_head *inode_hashtable __read_mostly;
 
 /*
@@ -80,7 +80,7 @@ static struct hlist_head *inode_hashtabl
  * NOTE! You also have to own the lock if you change
  * the i_state of an inode while it is in use..
  */
-DEFINE_SPINLOCK(inode_lock);
+__global DEFINE_SPINLOCK(inode_lock);
 
 /*
  * iprune_mutex provides exclusion between the kswapd or try_to_free_pages
@@ -95,7 +95,7 @@ static DEFINE_MUTEX(iprune_mutex);
 /*
  * Statistics gathering..
  */
-struct inodes_stat_t inodes_stat;
+struct inodes_stat_t __global inodes_stat;
 
 static kmem_cache_t * inode_cachep __read_mostly;
 
@@ -169,7 +169,7 @@ #endif
 	return inode;
 }
 
-void destroy_inode(struct inode *inode) 
+void __global destroy_inode(struct inode *inode) 
 {
 	BUG_ON(inode_has_buffers(inode));
 	security_inode_free(inode);
diff --git a/fs/inotify_user.c b/fs/inotify_user.c
index 017cb0f..a7997c2 100644
--- a/fs/inotify_user.c
+++ b/fs/inotify_user.c
@@ -112,7 +112,7 @@ #include <linux/sysctl.h>
 
 static int zero;
 
-ctl_table inotify_table[] = {
+ctl_table __global inotify_table[] = {
 	{
 		.ctl_name	= INOTIFY_MAX_USER_INSTANCES,
 		.procname	= "max_user_instances",
diff --git a/fs/jffs2/Makefile b/fs/jffs2/Makefile
diff --git a/fs/jffs2/read.c b/fs/jffs2/read.c
diff --git a/fs/locks.c b/fs/locks.c
index b0b41a6..e4ef939 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -133,8 +133,8 @@ #define IS_POSIX(fl)	(fl->fl_flags & FL_
 #define IS_FLOCK(fl)	(fl->fl_flags & FL_FLOCK)
 #define IS_LEASE(fl)	(fl->fl_flags & FL_LEASE)
 
-int leases_enable = 1;
-int lease_break_time = 45;
+int __global leases_enable = 1;
+int __global lease_break_time = 45;
 
 #define for_each_lock(inode, lockp) \
 	for (lockp = &inode->i_flock; *lockp != NULL; lockp = &(*lockp)->fl_next)
@@ -1072,7 +1072,7 @@ EXPORT_SYMBOL(posix_lock_file_wait);
  * Searches the inode's list of locks to find any POSIX locks which conflict.
  * This function is called from locks_verify_locked() only.
  */
-int locks_mandatory_locked(struct inode *inode)
+int __global locks_mandatory_locked(struct inode *inode)
 {
 	fl_owner_t owner = current->files;
 	struct file_lock *fl;
@@ -2110,7 +2110,7 @@ static void move_lock_status(char **p, o
  *	@length: how much to read
  */
 
-int get_locks_status(char *buffer, char **start, off_t offset, int length)
+int __global get_locks_status(char *buffer, char **start, off_t offset, int length)
 {
 	struct list_head *tmp;
 	char *q = buffer;
diff --git a/fs/namei.c b/fs/namei.c
index 55a1312..dee817e 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -322,7 +322,7 @@ int get_write_access(struct inode * inod
 	return 0;
 }
 
-int deny_write_access(struct file * file)
+int __global deny_write_access(struct file * file)
 {
 	struct inode *inode = file->f_dentry->d_inode;
 
@@ -1040,7 +1040,7 @@ static int __emul_lookup_dentry(const ch
 	return 1;
 }
 
-void set_fs_altroot(void)
+void __global set_fs_altroot(void)
 {
 	char *emul = __emul_prefix();
 	struct nameidata nd;
diff --git a/fs/namespace.c b/fs/namespace.c
index fa7ed6a..eed31ac 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -38,7 +38,7 @@ static inline int sysfs_init(void)
 #endif
 
 /* spinlock for vfsmount related operations, inplace of dcache_lock */
-__cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock);
+__global __cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock);
 
 static int event;
 
@@ -400,7 +400,7 @@ static int show_vfsmnt(struct seq_file *
 	return err;
 }
 
-struct seq_operations mounts_op = {
+struct seq_operations __global mounts_op = {
 	.start	= m_start,
 	.next	= m_next,
 	.stop	= m_stop,
@@ -438,7 +438,7 @@ static int show_vfsstat(struct seq_file 
 	return err;
 }
 
-struct seq_operations mountstats_op = {
+struct seq_operations __global mountstats_op = {
 	.start	= m_start,
 	.next	= m_next,
 	.stop	= m_stop,
@@ -1447,7 +1447,7 @@ dput_out:
  * Allocate a new namespace structure and populate it with contents
  * copied from the namespace of the passed in task structure.
  */
-struct namespace *dup_namespace(struct task_struct *tsk, struct fs_struct *fs)
+struct namespace * __global dup_namespace(struct task_struct *tsk, struct fs_struct *fs)
 {
 	struct namespace *namespace = tsk->namespace;
 	struct namespace *new_ns;
@@ -1514,7 +1514,7 @@ struct namespace *dup_namespace(struct t
 	return new_ns;
 }
 
-int copy_namespace(int flags, struct task_struct *tsk)
+int __global copy_namespace(int flags, struct task_struct *tsk)
 {
 	struct namespace *namespace = tsk->namespace;
 	struct namespace *new_ns;
@@ -1867,7 +1867,7 @@ void __init mnt_init(unsigned long mempa
 	init_mount_tree();
 }
 
-void __put_namespace(struct namespace *namespace)
+void __global __put_namespace(struct namespace *namespace)
 {
 	struct vfsmount *root = namespace->root;
 	LIST_HEAD(umount_list);
diff --git a/fs/pipe.c b/fs/pipe.c
index 2035257..eaa60a7 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -822,7 +822,7 @@ struct pipe_inode_info * alloc_pipe_info
 	return pipe;
 }
 
-void __free_pipe_info(struct pipe_inode_info *pipe)
+void __global __free_pipe_info(struct pipe_inode_info *pipe)
 {
 	int i;
 
@@ -890,7 +890,7 @@ fail_inode:
 	return NULL;
 }
 
-int do_pipe(int *fd)
+int __global do_pipe(int *fd)
 {
 	struct qstr this;
 	char name[32];
diff --git a/fs/proc/base.c b/fs/proc/base.c
index fe8d55f..687c944 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1975,7 +1975,7 @@ static struct inode_operations proc_self
  *       that no dcache entries will exist at process exit time it
  *       just makes it very unlikely that any will persist.
  */
-void proc_flush_task(struct task_struct *task)
+void __global proc_flush_task(struct task_struct *task)
 {
 	struct dentry *dentry, *leader, *dir;
 	char buf[PROC_NUMBUF];
diff --git a/fs/proc/generic.c b/fs/proc/generic.c
index 4ba0300..dbfdf4a 100644
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -32,7 +32,7 @@ static loff_t proc_file_lseek(struct fil
 
 DEFINE_SPINLOCK(proc_subdir_lock);
 
-int proc_match(int len, const char *name, struct proc_dir_entry *de)
+int __global proc_match(int len, const char *name, struct proc_dir_entry *de)
 {
 	if (de->namelen != len)
 		return 0;
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
index 6a984f6..7e4296c 100644
--- a/fs/proc/kcore.c
+++ b/fs/proc/kcore.c
@@ -54,7 +54,7 @@ struct memelfnote
 static struct kcore_list *kclist;
 static DEFINE_RWLOCK(kclist_lock);
 
-void
+void __global
 kclist_add(struct kcore_list *new, void *addr, size_t size)
 {
 	new->addr = (unsigned long)addr;
diff --git a/fs/proc/proc_devtree.c b/fs/proc/proc_devtree.c
index abdf068..cb53138 100644
--- a/fs/proc/proc_devtree.c
+++ b/fs/proc/proc_devtree.c
@@ -77,18 +77,18 @@ __proc_device_tree_add_prop(struct proc_
 }
 
 
-void proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop)
+void  __global proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop)
 {
 	__proc_device_tree_add_prop(pde, prop, prop->name);
 }
 
-void proc_device_tree_remove_prop(struct proc_dir_entry *pde,
+void __global proc_device_tree_remove_prop(struct proc_dir_entry *pde,
 				  struct property *prop)
 {
 	remove_proc_entry(prop->name, pde);
 }
 
-void proc_device_tree_update_prop(struct proc_dir_entry *pde,
+void __global proc_device_tree_update_prop(struct proc_dir_entry *pde,
 				  struct property *newprop,
 				  struct property *oldprop)
 {
@@ -172,8 +172,8 @@ retry:
 /*
  * Process a node, adding entries for its children and its properties.
  */
-void proc_device_tree_add_node(struct device_node *np,
-			       struct proc_dir_entry *de)
+void __global proc_device_tree_add_node(struct device_node *np,
+					struct proc_dir_entry *de)
 {
 	struct property *pp;
 	struct proc_dir_entry *ent;
diff --git a/fs/proc/proc_tty.c b/fs/proc/proc_tty.c
index 15c4455..c874f53 100644
--- a/fs/proc/proc_tty.c
+++ b/fs/proc/proc_tty.c
@@ -182,7 +182,7 @@ static int tty_ldiscs_read_proc(char *pa
  * This function is called by tty_register_driver() to handle
  * registering the driver's /proc handler into /proc/tty/driver/<foo>
  */
-void proc_tty_register_driver(struct tty_driver *driver)
+void __global proc_tty_register_driver(struct tty_driver *driver)
 {
 	struct proc_dir_entry *ent;
 		
@@ -205,7 +205,7 @@ void proc_tty_register_driver(struct tty
 /*
  * This function is called by tty_unregister_driver()
  */
-void proc_tty_unregister_driver(struct tty_driver *driver)
+void __global proc_tty_unregister_driver(struct tty_driver *driver)
 {
 	struct proc_dir_entry *ent;
 
diff --git a/fs/proc/root.c b/fs/proc/root.c
index 8901c65..7b99f88 100644
--- a/fs/proc/root.c
+++ b/fs/proc/root.c
@@ -22,7 +22,7 @@ #include "internal.h"
 struct proc_dir_entry *proc_net, *proc_net_stat, *proc_bus, *proc_root_fs, *proc_root_driver;
 
 #ifdef CONFIG_SYSCTL
-struct proc_dir_entry *proc_sys_root;
+struct proc_dir_entry * __global proc_sys_root;
 #endif
 
 static int proc_get_sb(struct file_system_type *fs_type,
@@ -37,7 +37,7 @@ static struct file_system_type proc_fs_t
 	.kill_sb	= kill_anon_super,
 };
 
-void __init proc_root_init(void)
+void __init __global proc_root_init(void)
 {
 	int err = proc_init_inodecache();
 	if (err)
diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
index b967733..9bd963d 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -222,7 +222,7 @@ static void __exit exit_ramfs_fs(void)
 module_init(init_ramfs_fs)
 module_exit(exit_ramfs_fs)
 
-int __init init_rootfs(void)
+int __init __global init_rootfs(void)
 {
 	return register_filesystem(&rootfs_fs_type);
 }
diff --git a/fs/splice.c b/fs/splice.c
index 684bca3..78500fc 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -707,7 +707,7 @@ out_nomem:
  * key here is the 'actor' worker passed in that actually moves the data
  * to the wanted destination. See pipe_to_file/pipe_to_sendpage above.
  */
-ssize_t splice_from_pipe(struct pipe_inode_info *pipe, struct file *out,
+ssize_t __global splice_from_pipe(struct pipe_inode_info *pipe, struct file *out,
 			 loff_t *ppos, size_t len, unsigned int flags,
 			 splice_actor *actor)
 {
diff --git a/fs/super.c b/fs/super.c
index 6d4e817..ffa2854 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -45,7 +45,7 @@ void put_filesystem(struct file_system_t
 struct file_system_type *get_fs_type(const char *name);
 
 LIST_HEAD(super_blocks);
-DEFINE_SPINLOCK(sb_lock);
+__global DEFINE_SPINLOCK(sb_lock);
 
 /**
  *	alloc_super	-	create new superblock
@@ -347,7 +347,7 @@ static inline void write_super(struct su
  * hold up the sync while mounting a device. (The newly
  * mounted device won't need syncing.)
  */
-void sync_supers(void)
+void __global sync_supers(void)
 {
 	struct super_block *sb;
 
@@ -592,7 +592,7 @@ static void do_emergency_remount(unsigne
 	printk("Emergency Remount complete\n");
 }
 
-void emergency_remount(void)
+void __global emergency_remount(void)
 {
 	pdflush_operation(do_emergency_remount, 0);
 }
@@ -646,7 +646,7 @@ void kill_anon_super(struct super_block 
 
 EXPORT_SYMBOL(kill_anon_super);
 
-void __init unnamed_dev_init(void)
+void __init __global unnamed_dev_init(void)
 {
 	idr_init(&unnamed_dev_idr);
 }
diff --git a/init/calibrate.c b/init/calibrate.c
index d206c75..938f200 100644
--- a/init/calibrate.c
+++ b/init/calibrate.c
@@ -112,7 +112,7 @@ #endif
  */
 #define LPS_PREC 8
 
-void __devinit calibrate_delay(void)
+void __devinit __global calibrate_delay(void)
 {
 	unsigned long ticks, loopbit;
 	int lps_precision = LPS_PREC;
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 94aeec7..621bf15 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -17,13 +17,13 @@ #include "do_mounts.h"
 
 extern int get_filesystem_list(char * buf);
 
-int __initdata rd_doload;	/* 1 = load RAM disk, 0 = don't load */
+int __initdata __global rd_doload;	/* 1 = load RAM disk, 0 = don't load */
 
-int root_mountflags = MS_RDONLY | MS_SILENT;
+int __global root_mountflags = MS_RDONLY | MS_SILENT;
 char * __initdata root_device_name;
 static char __initdata saved_root_name[64];
 
-dev_t ROOT_DEV;
+dev_t __global ROOT_DEV;
 
 static int __init load_ramdisk(char *str)
 {
@@ -133,7 +133,7 @@ fail:
  *	is mounted on rootfs /sys.
  */
 
-dev_t name_to_dev_t(char *name)
+dev_t __global name_to_dev_t(char *name)
 {
 	char s[32];
 	char *p;
@@ -393,7 +393,7 @@ #endif
 /*
  * Prepare the namespace - decide what/where to mount, load ramdisks, etc.
  */
-void __init prepare_namespace(void)
+void __init __global prepare_namespace(void)
 {
 	int is_floppy;
 
@@ -430,4 +430,3 @@ out:
 	sys_chroot(".");
 	security_sb_post_mountroot();
 }
-
diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c
index a06f037..6386990 100644
--- a/init/do_mounts_initrd.c
+++ b/init/do_mounts_initrd.c
@@ -10,9 +10,10 @@ #include <linux/sched.h>
 
 #include "do_mounts.h"
 
-unsigned long initrd_start, initrd_end;
-int initrd_below_start_ok;
-unsigned int real_root_dev;	/* do_proc_dointvec cannot handle kdev_t */
+unsigned long __global initrd_start;
+unsigned long __global initrd_end;
+int __global initrd_below_start_ok;
+unsigned int __global real_root_dev;	/* do_proc_dointvec cannot handle kdev_t */
 static int __initdata old_fd, root_fd;
 static int __initdata mount_initrd = 1;
 
diff --git a/init/do_mounts_rd.c b/init/do_mounts_rd.c
index ed652f4..4ef0705 100644
--- a/init/do_mounts_rd.c
+++ b/init/do_mounts_rd.c
@@ -12,7 +12,7 @@ #include "do_mounts.h"
 
 #define BUILD_CRAMDISK
 
-int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
+int __initdata __global rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
 
 static int __init prompt_ramdisk(char *str)
 {
@@ -21,7 +21,7 @@ static int __init prompt_ramdisk(char *s
 }
 __setup("prompt_ramdisk=", prompt_ramdisk);
 
-int __initdata rd_image_start;		/* starting block # of image */
+int __initdata __global rd_image_start;		/* starting block # of image */
 
 static int __init ramdisk_start_setup(char *str)
 {
diff --git a/init/main.c b/init/main.c
index 8651a72..735b3f3 100644
--- a/init/main.c
+++ b/init/main.c
@@ -104,7 +104,7 @@ #ifdef CONFIG_TC
 extern void tc_init(void);
 #endif
 
-enum system_states system_state;
+enum system_states __global system_state;
 EXPORT_SYMBOL(system_state);
 
 /*
@@ -115,11 +115,11 @@ #define MAX_INIT_ENVS CONFIG_INIT_ENV_AR
 
 extern void time_init(void);
 /* Default late time init is NULL. archs can override this later. */
-void (*late_time_init)(void);
+void __global (*late_time_init)(void);
 extern void softirq_init(void);
 
 /* Untouched command line (eg. for /proc) saved by arch-specific code. */
-char saved_command_line[COMMAND_LINE_SIZE];
+char __global saved_command_line[COMMAND_LINE_SIZE];
 
 static char *execute_command;
 static char *ramdisk_execute_command;
@@ -188,7 +188,7 @@ static int __init obsolete_checksetup(ch
  * This should be approx 2 Bo*oMips to start (note initial shift), and will
  * still work even if initially too large, it will just take slightly longer
  */
-unsigned long loops_per_jiffy = (1<<12);
+unsigned long __global loops_per_jiffy = (1<<12);
 
 EXPORT_SYMBOL(loops_per_jiffy);
 
@@ -422,7 +422,7 @@ static int __init do_early_param(char *p
 }
 
 /* Arch code calls this early on, or if not, just before other parsing. */
-void __init parse_early_param(void)
+void __init __global parse_early_param(void)
 {
 	static __initdata int done = 0;
 	static __initdata char tmp_cmdline[COMMAND_LINE_SIZE];
@@ -453,7 +453,7 @@ void __init __attribute__((weak)) smp_se
 {
 }
 
-asmlinkage void __init start_kernel(void)
+asmlinkage void __init __global start_kernel(void)
 {
 	char * command_line;
 	extern struct kernel_param __start___param[], __stop___param[];
@@ -596,7 +596,7 @@ static int __init initcall_debug_setup(c
 }
 __setup("initcall_debug", initcall_debug_setup);
 
-struct task_struct *child_reaper = &init_task;
+struct task_struct * __global child_reaper = &init_task;
 
 extern initcall_t __initcall_start[], __initcall_end[];
 
diff --git a/ipc/compat.c b/ipc/compat.c
index 4d20cfd..3ff09e5 100644
--- a/ipc/compat.c
+++ b/ipc/compat.c
@@ -234,7 +234,7 @@ static inline int put_compat_semid_ds(st
 	return err;
 }
 
-long compat_sys_semctl(int first, int second, int third, void __user *uptr)
+long __global compat_sys_semctl(int first, int second, int third, void __user *uptr)
 {
 	union semun fourth;
 	u32 pad;
@@ -305,7 +305,7 @@ long compat_sys_semctl(int first, int se
 	return err;
 }
 
-long compat_sys_msgsnd(int first, int second, int third, void __user *uptr)
+long __global compat_sys_msgsnd(int first, int second, int third, void __user *uptr)
 {
 	struct msgbuf __user *p;
 	struct compat_msgbuf __user *up = uptr;
@@ -325,7 +325,7 @@ long compat_sys_msgsnd(int first, int se
 	return sys_msgsnd(first, p, second, third);
 }
 
-long compat_sys_msgrcv(int first, int second, int msgtyp, int third,
+long __global compat_sys_msgrcv(int first, int second, int msgtyp, int third,
 			   int version, void __user *uptr)
 {
 	struct msgbuf __user *p;
@@ -424,7 +424,7 @@ static inline int put_compat_msqid_ds(st
 	return err;
 }
 
-long compat_sys_msgctl(int first, int second, void __user *uptr)
+long __global compat_sys_msgctl(int first, int second, void __user *uptr)
 {
 	int err, err2;
 	struct msqid64_ds m64;
@@ -476,7 +476,7 @@ long compat_sys_msgctl(int first, int se
 	return err;
 }
 
-long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
+long __global compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
 			void __user *uptr)
 {
 	int err;
@@ -592,7 +592,7 @@ static inline int put_compat_shm_info(st
 	return err;
 }
 
-long compat_sys_shmctl(int first, int second, void __user *uptr)
+long __global compat_sys_shmctl(int first, int second, void __user *uptr)
 {
 	void __user *p;
 	struct shmid64_ds s64;
@@ -671,7 +671,7 @@ long compat_sys_shmctl(int first, int se
 	return err;
 }
 
-long compat_sys_semtimedop(int semid, struct sembuf __user *tsems,
+long __global compat_sys_semtimedop(int semid, struct sembuf __user *tsems,
 		unsigned nsops, const struct compat_timespec __user *timeout)
 {
 	struct timespec __user *ts64 = NULL;
diff --git a/ipc/msg.c b/ipc/msg.c
index 2b4fccf..eeb2030 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -37,9 +37,9 @@ #include <asm/uaccess.h>
 #include "util.h"
 
 /* sysctl: */
-int msg_ctlmax = MSGMAX;
-int msg_ctlmnb = MSGMNB;
-int msg_ctlmni = MSGMNI;
+int __global msg_ctlmax = MSGMAX;
+int __global msg_ctlmnb = MSGMNB;
+int __global msg_ctlmni = MSGMNI;
 
 /*
  * one msg_receiver structure for each sleeping receiver:
diff --git a/ipc/sem.c b/ipc/sem.c
index 6013c75..6b744e1 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -110,7 +110,7 @@ #define SEMOPM_FAST	64  /* ~ 372 bytes o
  *	
  */
 
-int sem_ctls[4] = {SEMMSL, SEMMNS, SEMOPM, SEMMNI};
+int __global sem_ctls[4] = {SEMMSL, SEMMNS, SEMOPM, SEMMNI};
 #define sc_semmsl	(sem_ctls[0])
 #define sc_semmns	(sem_ctls[1])
 #define sc_semopm	(sem_ctls[2])
@@ -1234,7 +1234,7 @@ asmlinkage long sys_semop (int semid, st
  * because of the reasoning in the comment above unlock_semundo.
  */
 
-int copy_semundo(unsigned long clone_flags, struct task_struct *tsk)
+int __global copy_semundo(unsigned long clone_flags, struct task_struct *tsk)
 {
 	struct sem_undo_list *undo_list;
 	int error;
@@ -1263,7 +1263,7 @@ int copy_semundo(unsigned long clone_fla
  * The current implementation does not do so. The POSIX standard
  * and SVID should be consulted to determine what behavior is mandated.
  */
-void exit_sem(struct task_struct *tsk)
+void __global exit_sem(struct task_struct *tsk)
 {
 	struct sem_undo_list *undo_list;
 	struct sem_undo *u, **up;
diff --git a/ipc/shm.c b/ipc/shm.c
index 940b0c9..4d1dd3a 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -55,9 +55,9 @@ #ifdef CONFIG_PROC_FS
 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
 #endif
 
-size_t	shm_ctlmax = SHMMAX;
-size_t 	shm_ctlall = SHMALL;
-int 	shm_ctlmni = SHMMNI;
+size_t	__global shm_ctlmax = SHMMAX;
+size_t 	__global shm_ctlall = SHMALL;
+int 	__global shm_ctlmni = SHMMNI;
 
 static int shm_tot; /* total number of shared memory pages */
 
@@ -688,7 +688,7 @@ out:
  * "raddr" thing points to kernel space, and there has to be a wrapper around
  * this.
  */
-long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
+long __global do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
 {
 	struct shmid_kernel *shp;
 	unsigned long addr;
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 6991bec..59a13da 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -1,4 +1,5 @@
 
+#include <linux/compiler.h>
 #include <linux/linkage.h>
 #include <linux/errno.h>
 
diff --git a/net/core/dev.c b/net/core/dev.c
index d95e262..1c08754 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -405,7 +405,7 @@ int netdev_boot_setup_check(struct net_d
  *	later in the device probing.
  *	Returns 0 if no settings found.
  */
-unsigned long netdev_boot_base(const char *prefix, int unit)
+unsigned long __global netdev_boot_base(const char *prefix, int unit)
 {
 	const struct netdev_boot_setup *s = dev_boot_setup;
 	char name[IFNAMSIZ];
@@ -429,7 +429,7 @@ unsigned long netdev_boot_base(const cha
 /*
  * Saves at boot time configured settings for any netdevice.
  */
-int __init netdev_boot_setup(char *str)
+int __init __global netdev_boot_setup(char *str)
 {
 	int ints[5];
 	struct ifmap map;
@@ -1330,7 +1330,7 @@ static int dev_gso_segment(struct sk_buf
 	return 0;
 }
 
-int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+int __global dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	if (likely(!skb->next)) {
 		if (netdev_nit)
@@ -1538,7 +1538,7 @@ int netdev_max_backlog = 1000;
 int netdev_budget = 300;
 int weight_p = 64;            /* old backlog weight */
 
-DEFINE_PER_CPU(struct netif_rx_stats, netdev_rx_stat) = { 0, };
+__global DEFINE_PER_CPU(struct netif_rx_stats, netdev_rx_stat) = { 0, };
 
 /**
  *	netif_rx	-	post buffer to the network code
@@ -2646,7 +2645,7 @@ static int dev_ifsioc(struct ifreq *ifr,
  *	positive or a negative errno code on error.
  */
 
-int dev_ioctl(unsigned int cmd, void __user *arg)
+int __global dev_ioctl(unsigned int cmd, void __user *arg)
 {
 	struct ifreq ifr;
 	int ret;
diff --git a/net/core/dv.c b/net/core/dv.c
index 29ee77f..6569d40 100644
--- a/net/core/dv.c
+++ b/net/core/dv.c
@@ -186,7 +186,7 @@ #else
 #define	DVDBG(a)
 #endif
 
-int divert_ioctl(unsigned int cmd, struct divert_cf __user *arg)
+int __global divert_ioctl(unsigned int cmd, struct divert_cf __user *arg)
 {
 	struct divert_cf	div_cf;
 	struct divert_blk	*div_blk;
@@ -434,7 +434,6 @@ int divert_ioctl(unsigned int cmd, struc
 	return 0;
 }
 
-
 /*
  * Check if packet should have its dest mac address set to the box itself
  * for diversion
diff --git a/net/core/flow.c b/net/core/flow.c
index 2191af5..fe4240b 100644
--- a/net/core/flow.c
+++ b/net/core/flow.c
@@ -285,7 +285,7 @@ static void flow_cache_flush_per_cpu(voi
 	tasklet_schedule(tasklet);
 }
 
-void flow_cache_flush(void)
+void __global flow_cache_flush(void)
 {
 	struct flow_flush_info info;
 	static DEFINE_MUTEX(flow_flush_sem);
diff --git a/net/core/iovec.c b/net/core/iovec.c
index 65e4b56..e562e7d 100644
--- a/net/core/iovec.c
+++ b/net/core/iovec.c
@@ -37,7 +37,8 @@ #include <net/sock.h>
  *	in any case.
  */
 
-int verify_iovec(struct msghdr *m, struct iovec *iov, char *address, int mode)
+int __global verify_iovec(struct msghdr *m, struct iovec *iov, char *address,
+			  int mode)
 {
 	int size, err, ct;
 	
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index 5130d2e..1afcc7b 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -499,8 +499,8 @@ out:
 }
 
 
-int pneigh_delete(struct neigh_table *tbl, const void *pkey,
-		  struct net_device *dev)
+int __global pneigh_delete(struct neigh_table *tbl, const void *pkey,
+			   struct net_device *dev)
 {
 	struct pneigh_entry *n, **np;
 	int key_len = tbl->key_len;
diff --git a/net/core/request_sock.c b/net/core/request_sock.c
index 79ebd75..8a9c3aa 100644
--- a/net/core/request_sock.c
+++ b/net/core/request_sock.c
@@ -31,7 +31,7 @@ #include <net/request_sock.h>
  * (<=32Mb of memory) and to 1024 on normal or better ones (>=256Mb).
  * Further increasing requires to change hash table size.
  */
-int sysctl_max_syn_backlog = 256;
+int __global sysctl_max_syn_backlog = 256;
 
 int reqsk_queue_alloc(struct request_sock_queue *queue,
 		      const int nr_table_entries)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 20e5bb7..0c35f52 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -155,7 +155,7 @@ size_t rtattr_strlcpy(char *dest, const 
 	return ret;
 }
 
-int rtnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo)
+int __global rtnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo)
 {
 	int err = 0;
 
@@ -777,7 +777,7 @@ static struct notifier_block rtnetlink_d
 	.notifier_call	= rtnetlink_event,
 };
 
-void __init rtnetlink_init(void)
+void __init __global rtnetlink_init(void)
 {
 	int i;
 
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 022d889..7502897 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2039,7 +2039,7 @@ err:
 
 EXPORT_SYMBOL_GPL(skb_segment);
 
-void __init skb_init(void)
+void __init __global skb_init(void)
 {
 	skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
 					      sizeof(struct sk_buff),
diff --git a/net/core/sock.c b/net/core/sock.c
index 51fcfbc..96db5f9 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -636,8 +636,8 @@ #endif
 }
 
 
-int sock_getsockopt(struct socket *sock, int level, int optname,
-		    char __user *optval, int __user *optlen)
+int __global sock_getsockopt(struct socket *sock, int level, int optname,
+			     char __user *optval, int __user *optlen)
 {
 	struct sock *sk = sock->sk;
 	
@@ -983,7 +983,7 @@ out:
 
 EXPORT_SYMBOL_GPL(sk_clone);
 
-void __init sk_init(void)
+void __init __global sk_init(void)
 {
 	if (num_physpages <= 4096) {
 		sysctl_wmem_max = 32767;
@@ -1065,8 +1065,8 @@ struct sk_buff *sock_wmalloc(struct sock
 /*
  * Allocate a skb from the socket's receive buffer.
  */ 
-struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force,
-			     gfp_t priority)
+struct sk_buff * __global sock_rmalloc(struct sock *sk, unsigned long size,
+				       int force, gfp_t priority)
 {
 	if (force || atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf) {
 		struct sk_buff *skb = alloc_skb(size, priority);
diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
index 0253413..1316556 100644
--- a/net/core/sysctl_net_core.c
+++ b/net/core/sysctl_net_core.c
@@ -30,7 +30,7 @@ extern u32 sysctl_xfrm_aevent_etime;
 extern u32 sysctl_xfrm_aevent_rseqth;
 #endif
 
-ctl_table core_table[] = {
+ctl_table __global core_table[] = {
 #ifdef CONFIG_NET
 	{
 		.ctl_name	= NET_CORE_WMEM_MAX,
diff --git a/net/core/user_dma.c b/net/core/user_dma.c
index 248a6b6..676efe0 100644
--- a/net/core/user_dma.c
+++ b/net/core/user_dma.c
@@ -33,7 +33,7 @@ #include <net/netdma.h>
 
 #define NET_DMA_DEFAULT_COPYBREAK 4096
 
-int sysctl_tcp_dma_copybreak = NET_DMA_DEFAULT_COPYBREAK;
+int __global sysctl_tcp_dma_copybreak = NET_DMA_DEFAULT_COPYBREAK;
 
 /**
  *	dma_skb_copy_datagram_iovec - Copy a datagram to an iovec.
@@ -45,7 +45,7 @@ int sysctl_tcp_dma_copybreak = NET_DMA_D
  *
  *	Note: the iovec is modified during the copy.
  */
-int dma_skb_copy_datagram_iovec(struct dma_chan *chan,
+int __global dma_skb_copy_datagram_iovec(struct dma_chan *chan,
 			struct sk_buff *skb, int offset, struct iovec *to,
 			size_t len, struct dma_pinned_list *pinned_list)
 {
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index 95fac55..944595e 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -27,7 +27,7 @@ #include <net/ip.h>
  * Allocate and initialize a new local port bind bucket.
  * The bindhash mutex for snum's hash chain must be held here.
  */
-struct inet_bind_bucket *inet_bind_bucket_create(kmem_cache_t *cachep,
+struct inet_bind_bucket * __global inet_bind_bucket_create(kmem_cache_t *cachep,
 						 struct inet_bind_hashbucket *head,
 						 const unsigned short snum)
 {
@@ -53,7 +53,7 @@ void inet_bind_bucket_destroy(kmem_cache
 	}
 }
 
-void inet_bind_hash(struct sock *sk, struct inet_bind_bucket *tb,
+void __global inet_bind_hash(struct sock *sk, struct inet_bind_bucket *tb,
 		    const unsigned short snum)
 {
 	inet_sk(sk)->num = snum;
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
index 70cea9d..583acc3 100644
--- a/net/ipv4/sysctl_net_ipv4.c
+++ b/net/ipv4/sysctl_net_ipv4.c
@@ -129,7 +129,7 @@ static int sysctl_tcp_congestion_control
 }
 
 
-ctl_table ipv4_table[] = {
+ctl_table __global ipv4_table[] = {
         {
 		.ctl_name	= NET_IPV4_TCP_TIMESTAMPS,
 		.procname	= "tcp_timestamps",
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 7c1bde3..67af642 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -431,7 +431,7 @@ static void tcp_synack_timer(struct sock
 				   TCP_TIMEOUT_INIT, TCP_RTO_MAX);
 }
 
-void tcp_set_keepalive(struct sock *sk, int val)
+void __global tcp_set_keepalive(struct sock *sk, int val)
 {
 	if ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN))
 		return;
@@ -442,7 +442,6 @@ void tcp_set_keepalive(struct sock *sk, 
 		inet_csk_delete_keepalive_timer(sk);
 }
 
-
 static void tcp_keepalive_timer (unsigned long data)
 {
 	struct sock *sk = (struct sock *) data;
diff --git a/net/netfilter/core.c b/net/netfilter/core.c
index 5d29d5e..13af457 100644
--- a/net/netfilter/core.c
+++ b/net/netfilter/core.c
@@ -245,7 +245,7 @@ struct proc_dir_entry *proc_net_netfilte
 EXPORT_SYMBOL(proc_net_netfilter);
 #endif
 
-void __init netfilter_init(void)
+void __init __global netfilter_init(void)
 {
 	int i, h;
 	for (i = 0; i < NPROTO; i++) {
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 0834c2e..f897dc3 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -182,7 +182,7 @@ requeue:
 	return q->q.qlen;
 }
 
-void __qdisc_run(struct net_device *dev)
+void __global __qdisc_run(struct net_device *dev)
 {
 	if (unlikely(dev->qdisc == &noop_qdisc))
 		goto out;
@@ -535,7 +535,7 @@ void qdisc_destroy(struct Qdisc *qdisc)
 	call_rcu(&qdisc->q_rcu, __qdisc_destroy);
 }
 
-void dev_activate(struct net_device *dev)
+void __global dev_activate(struct net_device *dev)
 {
 	/* No queueing discipline is attached to device;
 	   create default one i.e. pfifo_fast for devices,
@@ -575,7 +575,7 @@ void dev_activate(struct net_device *dev
 	spin_unlock_bh(&dev->queue_lock);
 }
 
-void dev_deactivate(struct net_device *dev)
+void __global dev_deactivate(struct net_device *dev)
 {
 	struct Qdisc *qdisc;
 
@@ -602,7 +602,7 @@ void dev_deactivate(struct net_device *d
 	}
 }
 
-void dev_init_scheduler(struct net_device *dev)
+void __global dev_init_scheduler(struct net_device *dev)
 {
 	qdisc_lock_tree(dev);
 	dev->qdisc = &noop_qdisc;
@@ -613,7 +613,7 @@ void dev_init_scheduler(struct net_devic
 	dev_watchdog_init(dev);
 }
 
-void dev_shutdown(struct net_device *dev)
+void __global dev_shutdown(struct net_device *dev)
 {
 	struct Qdisc *qdisc;
 
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index f35bc67..e436c99 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -748,7 +748,7 @@ static struct xfrm_policy *clone_policy(
 	return newp;
 }
 
-int __xfrm_sk_clone_policy(struct sock *sk)
+int __global __xfrm_sk_clone_policy(struct sock *sk)
 {
 	struct xfrm_policy *p0 = sk->sk_policy[0],
 			   *p1 = sk->sk_policy[1];
@@ -1438,7 +1438,7 @@ static void __init xfrm_policy_init(void
 	register_netdevice_notifier(&xfrm_dev_notifier);
 }
 
-void __init xfrm_init(void)
+void __init __global xfrm_init(void)
 {
 	xfrm_state_init();
 	xfrm_policy_init();
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index a300702..1eaaa94 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -686,7 +686,7 @@ void avc_audit(u32 ssid, u32 tsid,
  * @perms based on @tclass.  Returns %0 on success or
  * -%ENOMEM if insufficient memory exists to add the callback.
  */
-int avc_add_callback(int (*callback)(u32 event, u32 ssid, u32 tsid,
+int __global avc_add_callback(int (*callback)(u32 event, u32 ssid, u32 tsid,
                                      u16 tclass, u32 perms,
                                      u32 *out_retained),
                      u32 events, u32 ssid, u32 tsid,
@@ -797,7 +797,7 @@ out:
  * avc_ss_reset - Flush the cache and revalidate migrated permissions.
  * @seqno: policy sequence number
  */
-int avc_ss_reset(u32 seqno)
+int __global avc_ss_reset(u32 seqno)
 {
 	struct avc_callback_node *c;
 	int i, rc = 0, tmprc;
diff --git a/security/selinux/exports.c b/security/selinux/exports.c
index 9d7737d..39ab9a5 100644
--- a/security/selinux/exports.c
+++ b/security/selinux/exports.c
@@ -21,7 +21,7 @@ #include <linux/ipc.h>
 #include "security.h"
 #include "objsec.h"
 
-void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid)
+void __global selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid)
 {
 	struct task_security_struct *tsec = tsk->security;
 	if (selinux_enabled)
@@ -30,7 +30,7 @@ void selinux_task_ctxid(struct task_stru
 		*ctxid = 0;
 }
 
-int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen)
+int __global selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen)
 {
 	if (selinux_enabled)
 		return security_sid_to_context(ctxid, ctx, ctxlen);
@@ -42,7 +42,7 @@ int selinux_ctxid_to_string(u32 ctxid, c
 	return 0;
 }
 
-void selinux_get_inode_sid(const struct inode *inode, u32 *sid)
+void __global selinux_get_inode_sid(const struct inode *inode, u32 *sid)
 {
 	if (selinux_enabled) {
 		struct inode_security_struct *isec = inode->i_security;
@@ -52,7 +52,7 @@ void selinux_get_inode_sid(const struct 
 	*sid = 0;
 }
 
-void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid)
+void __global selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid)
 {
 	if (selinux_enabled) {
 		struct ipc_security_struct *isec = ipcp->security;
@@ -62,7 +62,7 @@ void selinux_get_ipc_sid(const struct ke
 	*sid = 0;
 }
 
-void selinux_get_task_sid(struct task_struct *tsk, u32 *sid)
+void __global selinux_get_task_sid(struct task_struct *tsk, u32 *sid)
 {
 	if (selinux_enabled) {
 		struct task_security_struct *tsec = tsk->security;
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 5d1b8c7..50e0269 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -83,7 +83,7 @@ extern int selinux_nlmsg_lookup(u16 scla
 extern int selinux_compat_net;
 
 #ifdef CONFIG_SECURITY_SELINUX_DEVELOP
-int selinux_enforcing = 0;
+int __global selinux_enforcing = 0;
 
 static int __init enforcing_setup(char *str)
 {
@@ -4683,7 +4683,7 @@ #endif
 	return 0;
 }
 
-void selinux_complete_init(void)
+void __global selinux_complete_init(void)
 {
 	printk(KERN_INFO "SELinux:  Completing initialization.\n");
 
diff --git a/security/selinux/netlink.c b/security/selinux/netlink.c
index e203883..dcb1ec4 100644
--- a/security/selinux/netlink.c
+++ b/security/selinux/netlink.c
@@ -97,7 +97,7 @@ void selnl_notify_setenforce(int val)
 	selnl_notify(SELNL_MSG_SETENFORCE, &val);
 }
 
-void selnl_notify_policyload(u32 seqno)
+void __global selnl_notify_policyload(u32 seqno)
 {
 	selnl_notify(SELNL_MSG_POLICYLOAD, &seqno);
 }
diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c
index f03960e..3ed702f 100644
--- a/security/selinux/ss/policydb.c
+++ b/security/selinux/ss/policydb.c
@@ -45,7 +45,7 @@ static char *symtab_name[SYM_NUM] = {
 };
 #endif
 
-int selinux_mls_enabled = 0;
+int __global selinux_mls_enabled = 0;
 
 static unsigned int symtab_sizes[SYM_NUM] = {
 	2,
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index 85e4298..58bd308 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -42,7 +42,7 @@ #include "conditional.h"
 #include "mls.h"
 
 extern void selnl_notify_policyload(u32 seqno);
-unsigned int policydb_loaded_version;
+unsigned int __global policydb_loaded_version;
 
 static DEFINE_RWLOCK(policy_rwlock);
 #define POLICY_RDLOCK read_lock(&policy_rwlock)
@@ -56,7 +56,7 @@ #define LOAD_UNLOCK mutex_unlock(&load_m
 
 static struct sidtab sidtab;
 struct policydb policydb;
-int ss_initialized = 0;
+int __global ss_initialized = 0;
 
 /*
  * The largest sequence number that has been used when
@@ -397,7 +397,7 @@ out:
 	return -EPERM;
 }
 
-int security_validate_transition(u32 oldsid, u32 newsid, u32 tasksid,
+int __global security_validate_transition(u32 oldsid, u32 newsid, u32 tasksid,
                                  u16 tclass)
 {
 	struct context *ocontext;
@@ -484,7 +484,7 @@ out:
  * Return -%EINVAL if any of the parameters are invalid or %0
  * if the access vector decisions were computed successfully.
  */
-int security_compute_av(u32 ssid,
+int __global security_compute_av(u32 ssid,
 			u32 tsid,
 			u16 tclass,
 			u32 requested,
@@ -583,7 +583,7 @@ #include "initial_sid_to_string.h"
  * into a dynamically allocated string of the correct size.  Set @scontext
  * to point to this string and set @scontext_len to the length of the string.
  */
-int security_sid_to_context(u32 sid, char **scontext, u32 *scontext_len)
+int __global security_sid_to_context(u32 sid, char **scontext, u32 *scontext_len)
 {
 	struct context *context;
 	int rc = 0;
@@ -749,7 +749,7 @@ out:
  * Returns -%EINVAL if the context is invalid, -%ENOMEM if insufficient
  * memory is available, or 0 on success.
  */
-int security_context_to_sid(char *scontext, u32 scontext_len, u32 *sid)
+int __global security_context_to_sid(char *scontext, u32 scontext_len, u32 *sid)
 {
 	return security_context_to_sid_core(scontext, scontext_len,
 	                                    sid, SECSID_NULL);
@@ -772,7 +772,7 @@ int security_context_to_sid(char *sconte
  * Returns -%EINVAL if the context is invalid, -%ENOMEM if insufficient
  * memory is available, or 0 on success.
  */
-int security_context_to_sid_default(char *scontext, u32 scontext_len, u32 *sid, u32 def_sid)
+int __global security_context_to_sid_default(char *scontext, u32 scontext_len, u32 *sid, u32 def_sid)
 {
 	return security_context_to_sid_core(scontext, scontext_len,
 	                                    sid, def_sid);
@@ -959,7 +959,7 @@ out:
  * if insufficient memory is available, or %0 if the new SID was
  * computed successfully.
  */
-int security_transition_sid(u32 ssid,
+int __global security_transition_sid(u32 ssid,
 			    u32 tsid,
 			    u16 tclass,
 			    u32 *out_sid)
@@ -980,7 +980,7 @@ int security_transition_sid(u32 ssid,
  * if insufficient memory is available, or %0 if the SID was
  * computed successfully.
  */
-int security_member_sid(u32 ssid,
+int __global security_member_sid(u32 ssid,
 			u32 tsid,
 			u16 tclass,
 			u32 *out_sid)
@@ -1001,7 +1001,7 @@ int security_member_sid(u32 ssid,
  * if insufficient memory is available, or %0 if the SID was
  * computed successfully.
  */
-int security_change_sid(u32 ssid,
+int __global security_change_sid(u32 ssid,
 			u32 tsid,
 			u16 tclass,
 			u32 *out_sid)
@@ -1210,7 +1210,7 @@ extern void selinux_complete_init(void);
  * This function will flush the access vector cache after
  * loading the new policy.
  */
-int security_load_policy(void *data, size_t len)
+int __global security_load_policy(void *data, size_t len)
 {
 	struct policydb oldpolicydb, newpolicydb;
 	struct sidtab oldsidtab, newsidtab;
@@ -1314,7 +1314,7 @@ err:
  * @port: port number
  * @out_sid: security identifier
  */
-int security_port_sid(u16 domain,
+int __global security_port_sid(u16 domain,
 		      u16 type,
 		      u8 protocol,
 		      u16 port,
@@ -1358,7 +1358,7 @@ out:
  * @if_sid: interface SID
  * @msg_sid: default SID for received packets
  */
-int security_netif_sid(char *name,
+int __global security_netif_sid(char *name,
 		       u32 *if_sid,
 		       u32 *msg_sid)
 {
@@ -1419,7 +1419,7 @@ static int match_ipv6_addrmask(u32 *inpu
  * @addrlen: address length in bytes
  * @out_sid: security identifier
  */
-int security_node_sid(u16 domain,
+int __global security_node_sid(u16 domain,
 		      void *addrp,
 		      u32 addrlen,
 		      u32 *out_sid)
@@ -1502,7 +1502,7 @@ #define SIDS_NEL 25
  * number of elements in the array.
  */
 
-int security_get_user_sids(u32 fromsid,
+int __global security_get_user_sids(u32 fromsid,
 	                   char *username,
 			   u32 **sids,
 			   u32 *nel)
@@ -1605,7 +1605,7 @@ out:
  * cannot support xattr or use a fixed labeling behavior like
  * transition SIDs or task SIDs.
  */
-int security_genfs_sid(const char *fstype,
+int __global security_genfs_sid(const char *fstype,
 	               char *path,
 		       u16 sclass,
 		       u32 *sid)
@@ -1662,7 +1662,7 @@ out:
  * @behavior: labeling behavior
  * @sid: SID for filesystem (superblock)
  */
-int security_fs_use(
+int __global security_fs_use(
 	const char *fstype,
 	unsigned int *behavior,
 	u32 *sid)
@@ -1704,7 +1704,7 @@ out:
 	return rc;
 }
 
-int security_get_bools(int *len, char ***names, int **values)
+int __global security_get_bools(int *len, char ***names, int **values)
 {
 	int i, rc = -ENOMEM;
 
@@ -1750,7 +1750,7 @@ err:
 }
 
 
-int security_set_bools(int len, int *values)
+int __global security_set_bools(int len, int *values)
 {
 	int i, rc = 0;
 	int lenp, seqno = 0;
@@ -1798,7 +1798,7 @@ out:
 	return rc;
 }
 
-int security_get_bool_value(int bool)
+int __global security_get_bool_value(int bool)
 {
 	int rc = 0;
 	int len;
@@ -1822,7 +1822,7 @@ struct selinux_audit_rule {
 	struct context au_ctxt;
 };
 
-void selinux_audit_rule_free(struct selinux_audit_rule *rule)
+void __global selinux_audit_rule_free(struct selinux_audit_rule *rule)
 {
 	if (rule) {
 		context_destroy(&rule->au_ctxt);
@@ -1830,7 +1830,7 @@ void selinux_audit_rule_free(struct seli
 	}
 }
 
-int selinux_audit_rule_init(u32 field, u32 op, char *rulestr,
+int __global selinux_audit_rule_init(u32 field, u32 op, char *rulestr,
                             struct selinux_audit_rule **rule)
 {
 	struct selinux_audit_rule *tmprule;
@@ -1923,7 +1923,7 @@ int selinux_audit_rule_init(u32 field, u
 	return rc;
 }
 
-int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
+int __global selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
                              struct selinux_audit_rule *rule,
                              struct audit_context *actx)
 {
@@ -2060,7 +2060,7 @@ static int __init aurule_init(void)
 }
 __initcall(aurule_init);
 
-void selinux_audit_set_callback(int (*callback)(void))
+void __global selinux_audit_set_callback(int (*callback)(void))
 {
 	aurule_callback = callback;
 }
diff --git a/sound/core/sound_oss.c b/sound/core/sound_oss.c

-- 
dwmw2


  parent reply	other threads:[~2006-08-24 15:27 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1156429585.3012.58.camel@pmac.infradead.org>
2006-08-24 15:24 ` [PATCH 0/4] Compile kernel with -fwhole-program --combine David Woodhouse
2006-08-24 16:48   ` Jan Engelhardt
2006-08-24 17:05     ` David Woodhouse
2006-08-25  6:01       ` Jan Engelhardt
2006-08-25  7:26         ` Sam Ravnborg
2006-08-25 10:14           ` David Woodhouse
2006-08-25  8:55         ` David Woodhouse
2006-08-25  9:11           ` Jan Engelhardt
2006-08-25  9:45             ` David Woodhouse
2006-08-25  9:51               ` Jan Engelhardt
2006-08-25 10:01                 ` David Woodhouse
2006-08-24 17:15     ` [OLPC-devel] " Arnd Bergmann
2006-08-24 17:25       ` David Woodhouse
2006-08-24 21:49   ` Adrian Bunk
2006-08-24 21:54     ` David Woodhouse
2006-08-25 20:11   ` Rob Landley
2006-08-25 20:35     ` David Woodhouse
2006-08-26  1:59       ` Segher Boessenkool
2006-08-28 10:52       ` Helge Hafting
2006-08-28 11:03         ` Jan Engelhardt
2006-08-28 11:21         ` David Woodhouse
2006-09-01 19:35           ` Ian Stirling
2006-09-01 21:15             ` David Woodhouse
2006-08-24 15:25 ` [PATCH 1/4] Inconsistent extern declarations David Woodhouse
2006-08-24 16:13   ` Alexey Dobriyan
2006-08-24 17:50     ` David Woodhouse
2006-08-24 21:17   ` Adrian Bunk
2006-08-24 15:26 ` [PATCH 2/4] Core support for --combine -fwhole-program David Woodhouse
2006-08-24 17:27   ` Josh Triplett
2006-08-24 17:33     ` David Woodhouse
2006-08-24 21:33   ` Adrian Bunk
2006-08-25  9:37     ` David Woodhouse
2006-08-25 10:30       ` Adrian Bunk
2006-08-25 10:40         ` David Woodhouse
2006-08-24 15:26 ` David Woodhouse [this message]
2006-08-24 21:30   ` [PATCH 3/4] Add __global tag where needed Adrian Bunk
2006-08-25  9:52     ` David Woodhouse
2006-08-25 10:26       ` Adrian Bunk
2006-08-25 10:34         ` David Woodhouse
2006-08-25 10:50           ` Adrian Bunk
2006-08-24 15:28 ` [PATCH 4/4] Some extra --combine hacks David Woodhouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1156433212.3012.120.camel@pmac.infradead.org \
    --to=dwmw2@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.