Commit 311b8935 authored by David S. Miller's avatar David S. Miller

Merge branch 'sparc_sparse_fixes'

Sam Ravnborg says:

====================
sparc sparse fixes + diverse cleanup

v1 => v2
- audit of all patches. I deliberately waited a while
  before doing so - in order to look at them with fresh eyes.
- Fix bogus sbus() use found by davem in iommu.c
- Split patch touching iommu.c and io-unit.c in two
- Fix bogus sbus use in time_32 (sbus_readw => sbus_readl)
- Dropped patch that touches signal_64.c
  __put_user() does many magic things and I could not convince
  myself that dropping a cast of a pointer to (u64) was correct.
- Updated a few changelogs to be more precise/descriptive
- In systbls.h rearrange include and move include to the common part
- Updated cover letter (this mail)

Fix build breakage of sparc32 in certain configurations

Fix sparse warnings in sparc32.
  What is remaining:
  - "shift too big" warnings in the soft floating point code.
    This is too complex - so I dropped trying to fix these

Fix sparse warnings in sparc64.
  What is remaining:
  - "shift too big" warnings in the soft floating point code (like sparc32)
  - pcr.c defines arch_irq_work_raise() which is also defined as __weak in common code.
    As I recall there are some issues with weak functions with prototypes
    so it is left as-is
  - signal32.c issue a lot of "cast removes address space of expression"
    This actually deserve an extra look - as I think this may be
    some code that mixes two sizes to __put_user()
  - viohs.c uses a variable length array
  - init_64.c reference vmemmap_free which is properly declared in common code
    but seems to be guarded by wrong ifdefs
  - signal_64.c mix with __user pointers and wrong casts

None of the remaining sparse warnings looks simple to fix - and any
hints how to proceed are appreciated.

A lot of the sparse warnings are fixed by addding or moving function
prototypes to common files. Many prototypes are for functions
solely called from assembler so they are added only to shut up sparse.
But there is also a lot of prototypes that had local declarations
which are now visible both in the file where the function
is defined and in the file where the function is used.

Change all prototypes in sparc .h files so they do not use extern.
This change touches a lot of files.

Fix so we no longer assumes _NIG_WORDS can have more than one value,
and add a build time check to catch if the value changes anyway.

**The following patches require extra careful review:**

[PATCH 07/34] sparc32: fix sparse warnings in sys_sparc_32.c
  The return type of a few syscalls has been changed for sparc32,
  to align with sparc64.
  I assume this is safe to do.

[PATCH 08/34] sparc32: remove cast from output constraints in math asm statements
[PATCH 09/34] sparc64: remove cast from output constraints in math asm statements
  I have not much experience with gcc inline
  assembler - so please check that this looks OK.
  A cast in the output section of the inline
  assembler is dropped - which should be OK.

[PATCH 23/34] sparc64: clean up compat_sigset_t.seta handling
  This drops code that assumed _NSIG_WORDS could change.
  But as _NIG_WORDS are always constant drop this code.

[PATCH 34/34] sparc64: fix sparse warnings in int_64.c
  Introduces some ugly ifdef in the code.
  Was not sure if there was a smarter way to do this.
  It looked like some code was executed in the
  !CONFIG_NEED_MULTIPLE_NODES case which is not required.
  For now the simple solution with ifdef was used.

**The following patches touches files outside arch/sparc:**

[PATCH 24/34] sparc64: fix sparse warning in tsb.c
  Touches kernel/sysctl.c - removes a few sparc64 specific lines

[PATCH 27/34] sparc: fix sparse warnings in smp_32.c + smp_64.c
  Adds prototype for setup_profiling_timer to include/linux/profile.h.
  I could not find any obvious candidates to cc: on this patch
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents bf656998 48d37216
...@@ -124,7 +124,7 @@ extern void aes_sparc64_ctr_crypt_256(const u64 *key, const u64 *input, ...@@ -124,7 +124,7 @@ extern void aes_sparc64_ctr_crypt_256(const u64 *key, const u64 *input,
u64 *output, unsigned int len, u64 *output, unsigned int len,
u64 *iv); u64 *iv);
struct aes_ops aes128_ops = { static struct aes_ops aes128_ops = {
.encrypt = aes_sparc64_encrypt_128, .encrypt = aes_sparc64_encrypt_128,
.decrypt = aes_sparc64_decrypt_128, .decrypt = aes_sparc64_decrypt_128,
.load_encrypt_keys = aes_sparc64_load_encrypt_keys_128, .load_encrypt_keys = aes_sparc64_load_encrypt_keys_128,
...@@ -136,7 +136,7 @@ struct aes_ops aes128_ops = { ...@@ -136,7 +136,7 @@ struct aes_ops aes128_ops = {
.ctr_crypt = aes_sparc64_ctr_crypt_128, .ctr_crypt = aes_sparc64_ctr_crypt_128,
}; };
struct aes_ops aes192_ops = { static struct aes_ops aes192_ops = {
.encrypt = aes_sparc64_encrypt_192, .encrypt = aes_sparc64_encrypt_192,
.decrypt = aes_sparc64_decrypt_192, .decrypt = aes_sparc64_decrypt_192,
.load_encrypt_keys = aes_sparc64_load_encrypt_keys_192, .load_encrypt_keys = aes_sparc64_load_encrypt_keys_192,
...@@ -148,7 +148,7 @@ struct aes_ops aes192_ops = { ...@@ -148,7 +148,7 @@ struct aes_ops aes192_ops = {
.ctr_crypt = aes_sparc64_ctr_crypt_192, .ctr_crypt = aes_sparc64_ctr_crypt_192,
}; };
struct aes_ops aes256_ops = { static struct aes_ops aes256_ops = {
.encrypt = aes_sparc64_encrypt_256, .encrypt = aes_sparc64_encrypt_256,
.decrypt = aes_sparc64_decrypt_256, .decrypt = aes_sparc64_decrypt_256,
.load_encrypt_keys = aes_sparc64_load_encrypt_keys_256, .load_encrypt_keys = aes_sparc64_load_encrypt_keys_256,
......
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
#define ATOMIC_INIT(i) { (i) } #define ATOMIC_INIT(i) { (i) }
extern int __atomic_add_return(int, atomic_t *); int __atomic_add_return(int, atomic_t *);
extern int atomic_cmpxchg(atomic_t *, int, int); int atomic_cmpxchg(atomic_t *, int, int);
#define atomic_xchg(v, new) (xchg(&((v)->counter), new)) #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
extern int __atomic_add_unless(atomic_t *, int, int); int __atomic_add_unless(atomic_t *, int, int);
extern void atomic_set(atomic_t *, int); void atomic_set(atomic_t *, int);
#define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic_read(v) (*(volatile int *)&(v)->counter)
......
...@@ -19,15 +19,15 @@ ...@@ -19,15 +19,15 @@
#define atomic_set(v, i) (((v)->counter) = i) #define atomic_set(v, i) (((v)->counter) = i)
#define atomic64_set(v, i) (((v)->counter) = i) #define atomic64_set(v, i) (((v)->counter) = i)
extern void atomic_add(int, atomic_t *); void atomic_add(int, atomic_t *);
extern void atomic64_add(long, atomic64_t *); void atomic64_add(long, atomic64_t *);
extern void atomic_sub(int, atomic_t *); void atomic_sub(int, atomic_t *);
extern void atomic64_sub(long, atomic64_t *); void atomic64_sub(long, atomic64_t *);
extern int atomic_add_ret(int, atomic_t *); int atomic_add_ret(int, atomic_t *);
extern long atomic64_add_ret(long, atomic64_t *); long atomic64_add_ret(long, atomic64_t *);
extern int atomic_sub_ret(int, atomic_t *); int atomic_sub_ret(int, atomic_t *);
extern long atomic64_sub_ret(long, atomic64_t *); long atomic64_sub_ret(long, atomic64_t *);
#define atomic_dec_return(v) atomic_sub_ret(1, v) #define atomic_dec_return(v) atomic_sub_ret(1, v)
#define atomic64_dec_return(v) atomic64_sub_ret(1, v) #define atomic64_dec_return(v) atomic64_sub_ret(1, v)
...@@ -106,7 +106,7 @@ static inline long atomic64_add_unless(atomic64_t *v, long a, long u) ...@@ -106,7 +106,7 @@ static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
#define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
extern long atomic64_dec_if_positive(atomic64_t *v); long atomic64_dec_if_positive(atomic64_t *v);
/* Atomic operations are already serializing */ /* Atomic operations are already serializing */
#define smp_mb__before_atomic_dec() barrier() #define smp_mb__before_atomic_dec() barrier()
......
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
* NOTE: these routines are implementation dependent-- * NOTE: these routines are implementation dependent--
* understand the hardware you are querying! * understand the hardware you are querying!
*/ */
extern void set_auxio(unsigned char bits_on, unsigned char bits_off); void set_auxio(unsigned char bits_on, unsigned char bits_off);
extern unsigned char get_auxio(void); /* .../asm/floppy.h */ unsigned char get_auxio(void); /* .../asm/floppy.h */
/* /*
* The following routines are provided for driver-compatibility * The following routines are provided for driver-compatibility
...@@ -78,7 +78,7 @@ do { \ ...@@ -78,7 +78,7 @@ do { \
/* AUXIO2 (Power Off Control) */ /* AUXIO2 (Power Off Control) */
extern __volatile__ unsigned char * auxio_power_register; extern volatile u8 __iomem *auxio_power_register;
#define AUXIO_POWER_DETECT_FAILURE 32 #define AUXIO_POWER_DETECT_FAILURE 32
#define AUXIO_POWER_CLEAR_FAILURE 2 #define AUXIO_POWER_CLEAR_FAILURE 2
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
* *
* on - AUXIO_LTE_ON or AUXIO_LTE_OFF * on - AUXIO_LTE_ON or AUXIO_LTE_OFF
*/ */
extern void auxio_set_lte(int on); void auxio_set_lte(int on);
#define AUXIO_LED_ON 1 #define AUXIO_LED_ON 1
#define AUXIO_LED_OFF 0 #define AUXIO_LED_OFF 0
...@@ -91,7 +91,7 @@ extern void auxio_set_lte(int on); ...@@ -91,7 +91,7 @@ extern void auxio_set_lte(int on);
* *
* on - AUXIO_LED_ON or AUXIO_LED_OFF * on - AUXIO_LED_ON or AUXIO_LED_OFF
*/ */
extern void auxio_set_led(int on); void auxio_set_led(int on);
#endif /* ifndef __ASSEMBLY__ */ #endif /* ifndef __ASSEMBLY__ */
......
...@@ -20,8 +20,8 @@ struct bit_map { ...@@ -20,8 +20,8 @@ struct bit_map {
int num_colors; int num_colors;
}; };
extern int bit_map_string_get(struct bit_map *t, int len, int align); int bit_map_string_get(struct bit_map *t, int len, int align);
extern void bit_map_clear(struct bit_map *t, int offset, int len); void bit_map_clear(struct bit_map *t, int offset, int len);
extern void bit_map_init(struct bit_map *t, unsigned long *map, int size); void bit_map_init(struct bit_map *t, unsigned long *map, int size);
#endif /* defined(_SPARC_BITEXT_H) */ #endif /* defined(_SPARC_BITEXT_H) */
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
#error only <linux/bitops.h> can be included directly #error only <linux/bitops.h> can be included directly
#endif #endif
extern unsigned long ___set_bit(unsigned long *addr, unsigned long mask); unsigned long ___set_bit(unsigned long *addr, unsigned long mask);
extern unsigned long ___clear_bit(unsigned long *addr, unsigned long mask); unsigned long ___clear_bit(unsigned long *addr, unsigned long mask);
extern unsigned long ___change_bit(unsigned long *addr, unsigned long mask); unsigned long ___change_bit(unsigned long *addr, unsigned long mask);
/* /*
* Set bit 'nr' in 32-bit quantity at address 'addr' where bit '0' * Set bit 'nr' in 32-bit quantity at address 'addr' where bit '0'
......
...@@ -14,12 +14,12 @@ ...@@ -14,12 +14,12 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
extern int test_and_set_bit(unsigned long nr, volatile unsigned long *addr); int test_and_set_bit(unsigned long nr, volatile unsigned long *addr);
extern int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr); int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr);
extern int test_and_change_bit(unsigned long nr, volatile unsigned long *addr); int test_and_change_bit(unsigned long nr, volatile unsigned long *addr);
extern void set_bit(unsigned long nr, volatile unsigned long *addr); void set_bit(unsigned long nr, volatile unsigned long *addr);
extern void clear_bit(unsigned long nr, volatile unsigned long *addr); void clear_bit(unsigned long nr, volatile unsigned long *addr);
extern void change_bit(unsigned long nr, volatile unsigned long *addr); void change_bit(unsigned long nr, volatile unsigned long *addr);
#include <asm-generic/bitops/non-atomic.h> #include <asm-generic/bitops/non-atomic.h>
...@@ -32,8 +32,8 @@ extern void change_bit(unsigned long nr, volatile unsigned long *addr); ...@@ -32,8 +32,8 @@ extern void change_bit(unsigned long nr, volatile unsigned long *addr);
#ifdef __KERNEL__ #ifdef __KERNEL__
extern int ffs(int x); int ffs(int x);
extern unsigned long __ffs(unsigned long); unsigned long __ffs(unsigned long);
#include <asm-generic/bitops/ffz.h> #include <asm-generic/bitops/ffz.h>
#include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/sched.h>
...@@ -43,10 +43,10 @@ extern unsigned long __ffs(unsigned long); ...@@ -43,10 +43,10 @@ extern unsigned long __ffs(unsigned long);
* of bits set) of a N-bit word * of bits set) of a N-bit word
*/ */
extern unsigned long __arch_hweight64(__u64 w); unsigned long __arch_hweight64(__u64 w);
extern unsigned int __arch_hweight32(unsigned int w); unsigned int __arch_hweight32(unsigned int w);
extern unsigned int __arch_hweight16(unsigned int w); unsigned int __arch_hweight16(unsigned int w);
extern unsigned int __arch_hweight8(unsigned int w); unsigned int __arch_hweight8(unsigned int w);
#include <asm-generic/bitops/const_hweight.h> #include <asm-generic/bitops/const_hweight.h>
#include <asm-generic/bitops/lock.h> #include <asm-generic/bitops/lock.h>
......
#ifndef _SPARC_BTEXT_H #ifndef _SPARC_BTEXT_H
#define _SPARC_BTEXT_H #define _SPARC_BTEXT_H
extern int btext_find_display(void); int btext_find_display(void);
#endif /* _SPARC_BTEXT_H */ #endif /* _SPARC_BTEXT_H */
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#ifdef CONFIG_DEBUG_BUGVERBOSE #ifdef CONFIG_DEBUG_BUGVERBOSE
extern void do_BUG(const char *file, int line); void do_BUG(const char *file, int line);
#define BUG() do { \ #define BUG() do { \
do_BUG(__FILE__, __LINE__); \ do_BUG(__FILE__, __LINE__); \
__builtin_trap(); \ __builtin_trap(); \
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
#define flush_page_for_dma(addr) \ #define flush_page_for_dma(addr) \
sparc32_cachetlb_ops->page_for_dma(addr) sparc32_cachetlb_ops->page_for_dma(addr)
extern void sparc_flush_page_to_ram(struct page *page); void sparc_flush_page_to_ram(struct page *page);
#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1 #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1
#define flush_dcache_page(page) sparc_flush_page_to_ram(page) #define flush_dcache_page(page) sparc_flush_page_to_ram(page)
...@@ -51,8 +51,8 @@ extern void sparc_flush_page_to_ram(struct page *page); ...@@ -51,8 +51,8 @@ extern void sparc_flush_page_to_ram(struct page *page);
* way the windows are all clean for the next process and the stack * way the windows are all clean for the next process and the stack
* frames are up to date. * frames are up to date.
*/ */
extern void flush_user_windows(void); void flush_user_windows(void);
extern void kill_user_windows(void); void kill_user_windows(void);
extern void flushw_all(void); void flushw_all(void);
#endif /* _SPARC_CACHEFLUSH_H */ #endif /* _SPARC_CACHEFLUSH_H */
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
/* Cache flush operations. */ /* Cache flush operations. */
#define flushw_all() __asm__ __volatile__("flushw") #define flushw_all() __asm__ __volatile__("flushw")
extern void __flushw_user(void); void __flushw_user(void);
#define flushw_user() __flushw_user() #define flushw_user() __flushw_user()
#define flush_user_windows flushw_user #define flush_user_windows flushw_user
...@@ -30,29 +30,29 @@ extern void __flushw_user(void); ...@@ -30,29 +30,29 @@ extern void __flushw_user(void);
* use block commit stores (which invalidate icache lines) during * use block commit stores (which invalidate icache lines) during
* module load, so we need this. * module load, so we need this.
*/ */
extern void flush_icache_range(unsigned long start, unsigned long end); void flush_icache_range(unsigned long start, unsigned long end);
extern void __flush_icache_page(unsigned long); void __flush_icache_page(unsigned long);
extern void __flush_dcache_page(void *addr, int flush_icache); void __flush_dcache_page(void *addr, int flush_icache);
extern void flush_dcache_page_impl(struct page *page); void flush_dcache_page_impl(struct page *page);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_flush_dcache_page_impl(struct page *page, int cpu); void smp_flush_dcache_page_impl(struct page *page, int cpu);
extern void flush_dcache_page_all(struct mm_struct *mm, struct page *page); void flush_dcache_page_all(struct mm_struct *mm, struct page *page);
#else #else
#define smp_flush_dcache_page_impl(page,cpu) flush_dcache_page_impl(page) #define smp_flush_dcache_page_impl(page,cpu) flush_dcache_page_impl(page)
#define flush_dcache_page_all(mm,page) flush_dcache_page_impl(page) #define flush_dcache_page_all(mm,page) flush_dcache_page_impl(page)
#endif #endif
extern void __flush_dcache_range(unsigned long start, unsigned long end); void __flush_dcache_range(unsigned long start, unsigned long end);
#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1 #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1
extern void flush_dcache_page(struct page *page); void flush_dcache_page(struct page *page);
#define flush_icache_page(vma, pg) do { } while(0) #define flush_icache_page(vma, pg) do { } while(0)
#define flush_icache_user_range(vma,pg,adr,len) do { } while (0) #define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
extern void flush_ptrace_access(struct vm_area_struct *, struct page *, void flush_ptrace_access(struct vm_area_struct *, struct page *,
unsigned long uaddr, void *kaddr, unsigned long uaddr, void *kaddr,
unsigned long len, int write); unsigned long len, int write);
#define copy_to_user_page(vma, page, vaddr, dst, src, len) \ #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
do { \ do { \
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
* *
* it's best to have buff aligned on a 32-bit boundary * it's best to have buff aligned on a 32-bit boundary
*/ */
extern __wsum csum_partial(const void *buff, int len, __wsum sum); __wsum csum_partial(const void *buff, int len, __wsum sum);
/* the same as csum_partial, but copies from fs:src while it /* the same as csum_partial, but copies from fs:src while it
* checksums * checksums
...@@ -38,7 +38,7 @@ extern __wsum csum_partial(const void *buff, int len, __wsum sum); ...@@ -38,7 +38,7 @@ extern __wsum csum_partial(const void *buff, int len, __wsum sum);
* better 64-bit) boundary * better 64-bit) boundary
*/ */
extern unsigned int __csum_partial_copy_sparc_generic (const unsigned char *, unsigned char *); unsigned int __csum_partial_copy_sparc_generic (const unsigned char *, unsigned char *);
static inline __wsum static inline __wsum
csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum) csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum)
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
* *
* it's best to have buff aligned on a 32-bit boundary * it's best to have buff aligned on a 32-bit boundary
*/ */
extern __wsum csum_partial(const void * buff, int len, __wsum sum); __wsum csum_partial(const void * buff, int len, __wsum sum);
/* the same as csum_partial, but copies from user space while it /* the same as csum_partial, but copies from user space while it
* checksums * checksums
...@@ -37,12 +37,12 @@ extern __wsum csum_partial(const void * buff, int len, __wsum sum); ...@@ -37,12 +37,12 @@ extern __wsum csum_partial(const void * buff, int len, __wsum sum);
* here even more important to align src and dst on a 32-bit (or even * here even more important to align src and dst on a 32-bit (or even
* better 64-bit) boundary * better 64-bit) boundary
*/ */
extern __wsum csum_partial_copy_nocheck(const void *src, void *dst, __wsum csum_partial_copy_nocheck(const void *src, void *dst,
int len, __wsum sum); int len, __wsum sum);
extern long __csum_partial_copy_from_user(const void __user *src, long __csum_partial_copy_from_user(const void __user *src,
void *dst, int len, void *dst, int len,
__wsum sum); __wsum sum);
static inline __wsum static inline __wsum
csum_partial_copy_from_user(const void __user *src, csum_partial_copy_from_user(const void __user *src,
...@@ -59,9 +59,9 @@ csum_partial_copy_from_user(const void __user *src, ...@@ -59,9 +59,9 @@ csum_partial_copy_from_user(const void __user *src,
* Copy and checksum to user * Copy and checksum to user
*/ */
#define HAVE_CSUM_COPY_USER #define HAVE_CSUM_COPY_USER
extern long __csum_partial_copy_to_user(const void *src, long __csum_partial_copy_to_user(const void *src,
void __user *dst, int len, void __user *dst, int len,
__wsum sum); __wsum sum);
static inline __wsum static inline __wsum
csum_and_copy_to_user(const void *src, csum_and_copy_to_user(const void *src,
...@@ -77,7 +77,7 @@ csum_and_copy_to_user(const void *src, ...@@ -77,7 +77,7 @@ csum_and_copy_to_user(const void *src,
/* ihl is always 5 or greater, almost always is 5, and iph is word aligned /* ihl is always 5 or greater, almost always is 5, and iph is word aligned
* the majority of the time. * the majority of the time.
*/ */
extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl); __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
/* Fold a partial checksum without adding pseudo headers. */ /* Fold a partial checksum without adding pseudo headers. */
static inline __sum16 csum_fold(__wsum sum) static inline __sum16 csum_fold(__wsum sum)
...@@ -96,9 +96,9 @@ static inline __sum16 csum_fold(__wsum sum) ...@@ -96,9 +96,9 @@ static inline __sum16 csum_fold(__wsum sum)
} }
static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
unsigned int len, unsigned int len,
unsigned short proto, unsigned short proto,
__wsum sum) __wsum sum)
{ {
__asm__ __volatile__( __asm__ __volatile__(
" addcc %1, %0, %0\n" " addcc %1, %0, %0\n"
...@@ -116,9 +116,9 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, ...@@ -116,9 +116,9 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
* returns a 16-bit checksum, already complemented * returns a 16-bit checksum, already complemented
*/ */
static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
unsigned short len, unsigned short len,
unsigned short proto, unsigned short proto,
__wsum sum) __wsum sum)
{ {
return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum)); return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum));
} }
......
...@@ -20,7 +20,7 @@ static inline unsigned long xchg_u32(__volatile__ unsigned long *m, unsigned lon ...@@ -20,7 +20,7 @@ static inline unsigned long xchg_u32(__volatile__ unsigned long *m, unsigned lon
return val; return val;
} }
extern void __xchg_called_with_bad_pointer(void); void __xchg_called_with_bad_pointer(void);
static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int size) static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int size)
{ {
...@@ -45,9 +45,9 @@ static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int ...@@ -45,9 +45,9 @@ static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int
#define __HAVE_ARCH_CMPXCHG 1 #define __HAVE_ARCH_CMPXCHG 1
/* bug catcher for when unsupported size is used - won't link */ /* bug catcher for when unsupported size is used - won't link */
extern void __cmpxchg_called_with_bad_pointer(void); void __cmpxchg_called_with_bad_pointer(void);
/* we only need to support cmpxchg of a u32 on sparc */ /* we only need to support cmpxchg of a u32 on sparc */
extern unsigned long __cmpxchg_u32(volatile u32 *m, u32 old, u32 new_); unsigned long __cmpxchg_u32(volatile u32 *m, u32 old, u32 new_);
/* don't worry...optimizer will get rid of most of this */ /* don't worry...optimizer will get rid of most of this */
static inline unsigned long static inline unsigned long
......
...@@ -42,7 +42,7 @@ static inline unsigned long xchg64(__volatile__ unsigned long *m, unsigned long ...@@ -42,7 +42,7 @@ static inline unsigned long xchg64(__volatile__ unsigned long *m, unsigned long
#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
extern void __xchg_called_with_bad_pointer(void); void __xchg_called_with_bad_pointer(void);
static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr,
int size) int size)
...@@ -91,7 +91,7 @@ __cmpxchg_u64(volatile long *m, unsigned long old, unsigned long new) ...@@ -91,7 +91,7 @@ __cmpxchg_u64(volatile long *m, unsigned long old, unsigned long new)
/* This function doesn't exist, so you'll get a linker error /* This function doesn't exist, so you'll get a linker error
if something tries to do an invalid cmpxchg(). */ if something tries to do an invalid cmpxchg(). */
extern void __cmpxchg_called_with_bad_pointer(void); void __cmpxchg_called_with_bad_pointer(void);
static inline unsigned long static inline unsigned long
__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
......
...@@ -20,8 +20,8 @@ static inline void __delay(unsigned long loops) ...@@ -20,8 +20,8 @@ static inline void __delay(unsigned long loops)
} }
/* This is too messy with inline asm on the Sparc. */ /* This is too messy with inline asm on the Sparc. */
extern void __udelay(unsigned long usecs, unsigned long lpj); void __udelay(unsigned long usecs, unsigned long lpj);
extern void __ndelay(unsigned long nsecs, unsigned long lpj); void __ndelay(unsigned long nsecs, unsigned long lpj);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
#define __udelay_val cpu_data(smp_processor_id()).udelay_val #define __udelay_val cpu_data(smp_processor_id()).udelay_val
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
extern void __delay(unsigned long loops); void __delay(unsigned long loops);
extern void udelay(unsigned long usecs); void udelay(unsigned long usecs);
#define mdelay(n) udelay((n) * 1000) #define mdelay(n) udelay((n) * 1000)
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
...@@ -19,7 +19,7 @@ struct dev_archdata { ...@@ -19,7 +19,7 @@ struct dev_archdata {
int numa_node; int numa_node;
}; };
extern void of_propagate_archdata(struct platform_device *bus); void of_propagate_archdata(struct platform_device *bus);
struct pdev_archdata { struct pdev_archdata {
struct resource resource[PROMREG_MAX]; struct resource resource[PROMREG_MAX];
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#define DMA_ERROR_CODE (~(dma_addr_t)0x0) #define DMA_ERROR_CODE (~(dma_addr_t)0x0)
extern int dma_supported(struct device *dev, u64 mask); int dma_supported(struct device *dev, u64 mask);
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
......
...@@ -22,14 +22,14 @@ struct ebus_dma_info { ...@@ -22,14 +22,14 @@ struct ebus_dma_info {
unsigned char name[64]; unsigned char name[64];
}; };
extern int ebus_dma_register(struct ebus_dma_info *p); int ebus_dma_register(struct ebus_dma_info *p);
extern int ebus_dma_irq_enable(struct ebus_dma_info *p, int on); int ebus_dma_irq_enable(struct ebus_dma_info *p, int on);
extern void ebus_dma_unregister(struct ebus_dma_info *p); void ebus_dma_unregister(struct ebus_dma_info *p);
extern int ebus_dma_request(struct ebus_dma_info *p, dma_addr_t bus_addr, int ebus_dma_request(struct ebus_dma_info *p, dma_addr_t bus_addr,
size_t len); size_t len);
extern void ebus_dma_prepare(struct ebus_dma_info *p, int write); void ebus_dma_prepare(struct ebus_dma_info *p, int write);
extern unsigned int ebus_dma_residue(struct ebus_dma_info *p); unsigned int ebus_dma_residue(struct ebus_dma_info *p);
extern unsigned int ebus_dma_addr(struct ebus_dma_info *p); unsigned int ebus_dma_addr(struct ebus_dma_info *p);
extern void ebus_dma_enable(struct ebus_dma_info *p, int on); void ebus_dma_enable(struct ebus_dma_info *p, int on);
#endif /* __ASM_SPARC_EBUS_DMA_H */ #endif /* __ASM_SPARC_EBUS_DMA_H */
...@@ -256,8 +256,7 @@ static inline void sun_fd_enable_dma(void) ...@@ -256,8 +256,7 @@ static inline void sun_fd_enable_dma(void)
pdma_areasize = pdma_size; pdma_areasize = pdma_size;
} }
extern int sparc_floppy_request_irq(unsigned int irq, int sparc_floppy_request_irq(unsigned int irq, irq_handler_t irq_handler);
irq_handler_t irq_handler);
static int sun_fd_request_irq(void) static int sun_fd_request_irq(void)
{ {
......
...@@ -296,7 +296,7 @@ struct sun_pci_dma_op { ...@@ -296,7 +296,7 @@ struct sun_pci_dma_op {
static struct sun_pci_dma_op sun_pci_dma_current = { -1U, 0, 0, NULL}; static struct sun_pci_dma_op sun_pci_dma_current = { -1U, 0, 0, NULL};
static struct sun_pci_dma_op sun_pci_dma_pending = { -1U, 0, 0, NULL}; static struct sun_pci_dma_op sun_pci_dma_pending = { -1U, 0, 0, NULL};
extern irqreturn_t floppy_interrupt(int irq, void *dev_id); irqreturn_t floppy_interrupt(int irq, void *dev_id);
static unsigned char sun_pci_fd_inb(unsigned long port) static unsigned char sun_pci_fd_inb(unsigned long port)
{ {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */ #define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
extern void _mcount(void); void _mcount(void);
#endif #endif
#endif #endif
...@@ -22,4 +22,8 @@ struct dyn_arch_ftrace { ...@@ -22,4 +22,8 @@ struct dyn_arch_ftrace {
}; };
#endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_DYNAMIC_FTRACE */
unsigned long prepare_ftrace_return(unsigned long parent,
unsigned long self_addr,
unsigned long frame_pointer);
#endif /* _ASM_SPARC64_FTRACE */ #endif /* _ASM_SPARC64_FTRACE */
...@@ -31,7 +31,7 @@ extern unsigned long highstart_pfn, highend_pfn; ...@@ -31,7 +31,7 @@ extern unsigned long highstart_pfn, highend_pfn;
extern pgprot_t kmap_prot; extern pgprot_t kmap_prot;
extern pte_t *pkmap_page_table; extern pte_t *pkmap_page_table;
extern void kmap_init(void) __init; void kmap_init(void) __init;
/* /*
* Right now we initialize only a single pte table. It can be extended * Right now we initialize only a single pte table. It can be extended
...@@ -49,8 +49,8 @@ extern void kmap_init(void) __init; ...@@ -49,8 +49,8 @@ extern void kmap_init(void) __init;
#define PKMAP_END (PKMAP_ADDR(LAST_PKMAP)) #define PKMAP_END (PKMAP_ADDR(LAST_PKMAP))
extern void *kmap_high(struct page *page); void *kmap_high(struct page *page);
extern void kunmap_high(struct page *page); void kunmap_high(struct page *page);
static inline void *kmap(struct page *page) static inline void *kmap(struct page *page)
{ {
...@@ -68,8 +68,8 @@ static inline void kunmap(struct page *page) ...@@ -68,8 +68,8 @@ static inline void kunmap(struct page *page)
kunmap_high(page); kunmap_high(page);
} }
extern void *kmap_atomic(struct page *page); void *kmap_atomic(struct page *page);
extern void __kunmap_atomic(void *kvaddr); void __kunmap_atomic(void *kvaddr);
#define flush_cache_kmaps() flush_cache_all() #define flush_cache_kmaps() flush_cache_all()
......
...@@ -19,7 +19,7 @@ struct hvtramp_descr { ...@@ -19,7 +19,7 @@ struct hvtramp_descr {
struct hvtramp_mapping maps[1]; struct hvtramp_mapping maps[1];
}; };
extern void hv_cpu_startup(unsigned long hvdescr_pa); void hv_cpu_startup(unsigned long hvdescr_pa);
#endif #endif
......
This diff is collapsed.
...@@ -20,6 +20,6 @@ struct idprom { ...@@ -20,6 +20,6 @@ struct idprom {
}; };
extern struct idprom *idprom; extern struct idprom *idprom;
extern void idprom_init(void); void idprom_init(void);
#endif /* !(_SPARC_IDPROM_H) */ #endif /* !(_SPARC_IDPROM_H) */
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
struct iounit_struct { struct iounit_struct {
unsigned long bmap[(IOUNIT_DMA_SIZE >> (PAGE_SHIFT + 3)) / sizeof(unsigned long)]; unsigned long bmap[(IOUNIT_DMA_SIZE >> (PAGE_SHIFT + 3)) / sizeof(unsigned long)];
spinlock_t lock; spinlock_t lock;
iopte_t *page_table; iopte_t __iomem *page_table;
unsigned long rotor[3]; unsigned long rotor[3];
unsigned long limit[4]; unsigned long limit[4];
}; };
......
...@@ -130,18 +130,18 @@ static inline void sbus_memcpy_toio(volatile void __iomem *dst, ...@@ -130,18 +130,18 @@ static inline void sbus_memcpy_toio(volatile void __iomem *dst,
* Bus number may be embedded in the higher bits of the physical address. * Bus number may be embedded in the higher bits of the physical address.
* This is why we have no bus number argument to ioremap(). * This is why we have no bus number argument to ioremap().
*/ */
extern void __iomem *ioremap(unsigned long offset, unsigned long size); void __iomem *ioremap(unsigned long offset, unsigned long size);
#define ioremap_nocache(X,Y) ioremap((X),(Y)) #define ioremap_nocache(X,Y) ioremap((X),(Y))
#define ioremap_wc(X,Y) ioremap((X),(Y)) #define ioremap_wc(X,Y) ioremap((X),(Y))
extern void iounmap(volatile void __iomem *addr); void iounmap(volatile void __iomem *addr);
/* Create a virtual mapping cookie for an IO port range */ /* Create a virtual mapping cookie for an IO port range */
extern void __iomem *ioport_map(unsigned long port, unsigned int nr); void __iomem *ioport_map(unsigned long port, unsigned int nr);
extern void ioport_unmap(void __iomem *); void ioport_unmap(void __iomem *);
/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
struct pci_dev; struct pci_dev;
extern void pci_iounmap(struct pci_dev *dev, void __iomem *); void pci_iounmap(struct pci_dev *dev, void __iomem *);
...@@ -162,7 +162,7 @@ static inline int sbus_can_burst64(void) ...@@ -162,7 +162,7 @@ static inline int sbus_can_burst64(void)
return 0; /* actually, sparc_cpu_model==sun4d */ return 0; /* actually, sparc_cpu_model==sun4d */
} }
struct device; struct device;
extern void sbus_set_sbus64(struct device *, int); void sbus_set_sbus64(struct device *, int);
#endif #endif
......
...@@ -90,12 +90,12 @@ static inline void _outl(u32 l, unsigned long addr) ...@@ -90,12 +90,12 @@ static inline void _outl(u32 l, unsigned long addr)
#define inl_p(__addr) inl(__addr) #define inl_p(__addr) inl(__addr)
#define outl_p(__l, __addr) outl(__l, __addr) #define outl_p(__l, __addr) outl(__l, __addr)
extern void outsb(unsigned long, const void *, unsigned long); void outsb(unsigned long, const void *, unsigned long);
extern void outsw(unsigned long, const void *, unsigned long); void outsw(unsigned long, const void *, unsigned long);
extern void outsl(unsigned long, const void *, unsigned long); void outsl(unsigned long, const void *, unsigned long);
extern void insb(unsigned long, void *, unsigned long); void insb(unsigned long, void *, unsigned long);
extern void insw(unsigned long, void *, unsigned long); void insw(unsigned long, void *, unsigned long);
extern void insl(unsigned long, void *, unsigned long); void insl(unsigned long, void *, unsigned long);
static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count) static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count)
{ {
...@@ -508,12 +508,12 @@ static inline void iounmap(volatile void __iomem *addr) ...@@ -508,12 +508,12 @@ static inline void iounmap(volatile void __iomem *addr)
#define iowrite32be(val,X) __raw_writel(val,X) #define iowrite32be(val,X) __raw_writel(val,X)
/* Create a virtual mapping cookie for an IO port range */ /* Create a virtual mapping cookie for an IO port range */
extern void __iomem *ioport_map(unsigned long port, unsigned int nr); void __iomem *ioport_map(unsigned long port, unsigned int nr);
extern void ioport_unmap(void __iomem *); void ioport_unmap(void __iomem *);
/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
struct pci_dev; struct pci_dev;
extern void pci_iounmap(struct pci_dev *dev, void __iomem *); void pci_iounmap(struct pci_dev *dev, void __iomem *);
static inline int sbus_can_dma_64bit(void) static inline int sbus_can_dma_64bit(void)
{ {
...@@ -524,7 +524,7 @@ static inline int sbus_can_burst64(void) ...@@ -524,7 +524,7 @@ static inline int sbus_can_burst64(void)
return 1; return 1;
} }
struct device; struct device;
extern void sbus_set_sbus64(struct device *, int); void sbus_set_sbus64(struct device *, int);
/* /*
* Convert a physical pointer to a virtual kernel pointer for /dev/mem * Convert a physical pointer to a virtual kernel pointer for /dev/mem
......
...@@ -99,7 +99,7 @@ struct iommu_regs { ...@@ -99,7 +99,7 @@ struct iommu_regs {
#define IOPTE_WAZ 0x00000001 /* Write as zeros */ #define IOPTE_WAZ 0x00000001 /* Write as zeros */
struct iommu_struct { struct iommu_struct {
struct iommu_regs *regs; struct iommu_regs __iomem *regs;
iopte_t *page_table; iopte_t *page_table;
/* For convenience */ /* For convenience */
unsigned long start; /* First managed virtual address */ unsigned long start; /* First managed virtual address */
...@@ -108,14 +108,14 @@ struct iommu_struct { ...@@ -108,14 +108,14 @@ struct iommu_struct {
struct bit_map usemap; struct bit_map usemap;
}; };
static inline void iommu_invalidate(struct iommu_regs *regs) static inline void iommu_invalidate(struct iommu_regs __iomem *regs)
{ {
regs->tlbflush = 0; sbus_writel(0, &regs->tlbflush);
} }
static inline void iommu_invalidate_page(struct iommu_regs *regs, unsigned long ba) static inline void iommu_invalidate_page(struct iommu_regs __iomem *regs, unsigned long ba)
{ {
regs->pageflush = (ba & PAGE_MASK); sbus_writel(ba & PAGE_MASK, &regs->pageflush);
} }
#endif /* !(_SPARC_IOMMU_H) */ #endif /* !(_SPARC_IOMMU_H) */
...@@ -58,8 +58,8 @@ struct strbuf { ...@@ -58,8 +58,8 @@ struct strbuf {
volatile unsigned long __flushflag_buf[(64+(64-1)) / sizeof(long)]; volatile unsigned long __flushflag_buf[(64+(64-1)) / sizeof(long)];
}; };
extern int iommu_table_init(struct iommu *iommu, int tsbsize, int iommu_table_init(struct iommu *iommu, int tsbsize,
u32 dma_offset, u32 dma_addr_mask, u32 dma_offset, u32 dma_addr_mask,
int numa_node); int numa_node);
#endif /* !(_SPARC64_IOMMU_H) */ #endif /* !(_SPARC64_IOMMU_H) */
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#define irq_canonicalize(irq) (irq) #define irq_canonicalize(irq) (irq)
extern void __init init_IRQ(void); void __init init_IRQ(void);
void __init sun4d_init_sbi_irq(void); void __init sun4d_init_sbi_irq(void);
#define NO_IRQ 0xffffffff #define NO_IRQ 0xffffffff
......
...@@ -39,32 +39,32 @@ ...@@ -39,32 +39,32 @@
*/ */
#define NR_IRQS 255 #define NR_IRQS 255
extern void irq_install_pre_handler(int irq, void irq_install_pre_handler(int irq,
void (*func)(unsigned int, void *, void *), void (*func)(unsigned int, void *, void *),
void *arg1, void *arg2); void *arg1, void *arg2);
#define irq_canonicalize(irq) (irq) #define irq_canonicalize(irq) (irq)
extern unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap); unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap);
extern unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino); unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino);
extern unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino); unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino);
extern unsigned int sun4v_build_msi(u32 devhandle, unsigned int *irq_p, unsigned int sun4v_build_msi(u32 devhandle, unsigned int *irq_p,
unsigned int msi_devino_start, unsigned int msi_devino_start,
unsigned int msi_devino_end); unsigned int msi_devino_end);
extern void sun4v_destroy_msi(unsigned int irq); void sun4v_destroy_msi(unsigned int irq);
extern unsigned int sun4u_build_msi(u32 portid, unsigned int *irq_p, unsigned int sun4u_build_msi(u32 portid, unsigned int *irq_p,
unsigned int msi_devino_start, unsigned int msi_devino_start,
unsigned int msi_devino_end, unsigned int msi_devino_end,
unsigned long imap_base, unsigned long imap_base,
unsigned long iclr_base); unsigned long iclr_base);
extern void sun4u_destroy_msi(unsigned int irq); void sun4u_destroy_msi(unsigned int irq);
extern unsigned char irq_alloc(unsigned int dev_handle, unsigned char irq_alloc(unsigned int dev_handle,
unsigned int dev_ino); unsigned int dev_ino);
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
extern void irq_free(unsigned int irq); void irq_free(unsigned int irq);
#endif #endif
extern void __init init_IRQ(void); void __init init_IRQ(void);
extern void fixup_irqs(void); void fixup_irqs(void);
static inline void set_softint(unsigned long bits) static inline void set_softint(unsigned long bits)
{ {
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
#include <linux/types.h> #include <linux/types.h>
#include <asm/psr.h> #include <asm/psr.h>
extern void arch_local_irq_restore(unsigned long); void arch_local_irq_restore(unsigned long);
extern unsigned long arch_local_irq_save(void); unsigned long arch_local_irq_save(void);
extern void arch_local_irq_enable(void); void arch_local_irq_enable(void);
static inline notrace unsigned long arch_local_save_flags(void) static inline notrace unsigned long arch_local_save_flags(void)
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
struct pt_regs; struct pt_regs;
extern void bad_trap(struct pt_regs *, long); void bad_trap(struct pt_regs *, long);
/* Grossly misnamed. */ /* Grossly misnamed. */
enum die_val { enum die_val {
......
...@@ -28,9 +28,12 @@ enum regnames { ...@@ -28,9 +28,12 @@ enum regnames {
#define NUMREGBYTES ((GDB_CSR + 1) * 4) #define NUMREGBYTES ((GDB_CSR + 1) * 4)
#else #else
#define NUMREGBYTES ((GDB_Y + 1) * 8) #define NUMREGBYTES ((GDB_Y + 1) * 8)
struct pt_regs;
asmlinkage void kgdb_trap(unsigned long trap_level, struct pt_regs *regs);
#endif #endif
extern void arch_kgdb_breakpoint(void); void arch_kgdb_breakpoint(void);
#define BREAK_INSTR_SIZE 4 #define BREAK_INSTR_SIZE 4
#define CACHE_FLUSH_IS_SAFE 1 #define CACHE_FLUSH_IS_SAFE 1
......
...@@ -43,7 +43,9 @@ struct kprobe_ctlblk { ...@@ -43,7 +43,9 @@ struct kprobe_ctlblk {
struct prev_kprobe prev_kprobe; struct prev_kprobe prev_kprobe;
}; };
extern int kprobe_exceptions_notify(struct notifier_block *self, int kprobe_exceptions_notify(struct notifier_block *self,
unsigned long val, void *data); unsigned long val, void *data);
extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr); int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
asmlinkage void __kprobes kprobe_trap(unsigned long trap_level,
struct pt_regs *regs);
#endif /* _SPARC64_KPROBES_H */ #endif /* _SPARC64_KPROBES_H */
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
#include <asm/hypervisor.h> #include <asm/hypervisor.h>
extern int ldom_domaining_enabled; extern int ldom_domaining_enabled;
extern void ldom_set_var(const char *var, const char *value); void ldom_set_var(const char *var, const char *value);
extern void ldom_reboot(const char *boot_command); void ldom_reboot(const char *boot_command);
extern void ldom_power_off(void); void ldom_power_off(void);
/* The event handler will be evoked when link state changes /* The event handler will be evoked when link state changes
* or data becomes available on the receive side. * or data becomes available on the receive side.
...@@ -51,30 +51,30 @@ struct ldc_channel_config { ...@@ -51,30 +51,30 @@ struct ldc_channel_config {
struct ldc_channel; struct ldc_channel;
/* Allocate state for a channel. */ /* Allocate state for a channel. */
extern struct ldc_channel *ldc_alloc(unsigned long id, struct ldc_channel *ldc_alloc(unsigned long id,
const struct ldc_channel_config *cfgp, const struct ldc_channel_config *cfgp,
void *event_arg); void *event_arg);
/* Shut down and free state for a channel. */ /* Shut down and free state for a channel. */
extern void ldc_free(struct ldc_channel *lp); void ldc_free(struct ldc_channel *lp);
/* Register TX and RX queues of the link with the hypervisor. */ /* Register TX and RX queues of the link with the hypervisor. */
extern int ldc_bind(struct ldc_channel *lp, const char *name); int ldc_bind(struct ldc_channel *lp, const char *name);
/* For non-RAW protocols we need to complete a handshake before /* For non-RAW protocols we need to complete a handshake before
* communication can proceed. ldc_connect() does that, if the * communication can proceed. ldc_connect() does that, if the
* handshake completes successfully, an LDC_EVENT_UP event will * handshake completes successfully, an LDC_EVENT_UP event will
* be sent up to the driver. * be sent up to the driver.
*/ */
extern int ldc_connect(struct ldc_channel *lp); int ldc_connect(struct ldc_channel *lp);
extern int ldc_disconnect(struct ldc_channel *lp); int ldc_disconnect(struct ldc_channel *lp);
extern int ldc_state(struct ldc_channel *lp); int ldc_state(struct ldc_channel *lp);
/* Read and write operations. Only valid when the link is up. */ /* Read and write operations. Only valid when the link is up. */
extern int ldc_write(struct ldc_channel *lp, const void *buf, int ldc_write(struct ldc_channel *lp, const void *buf,
unsigned int size); unsigned int size);
extern int ldc_read(struct ldc_channel *lp, void *buf, unsigned int size); int ldc_read(struct ldc_channel *lp, void *buf, unsigned int size);
#define LDC_MAP_SHADOW 0x01 #define LDC_MAP_SHADOW 0x01
#define LDC_MAP_DIRECT 0x02 #define LDC_MAP_DIRECT 0x02
...@@ -92,22 +92,22 @@ struct ldc_trans_cookie { ...@@ -92,22 +92,22 @@ struct ldc_trans_cookie {
}; };
struct scatterlist; struct scatterlist;
extern int ldc_map_sg(struct ldc_channel *lp, int ldc_map_sg(struct ldc_channel *lp,
struct scatterlist *sg, int num_sg, struct scatterlist *sg, int num_sg,
struct ldc_trans_cookie *cookies, int ncookies, struct ldc_trans_cookie *cookies, int ncookies,
unsigned int map_perm); unsigned int map_perm);
extern int ldc_map_single(struct ldc_channel *lp, int ldc_map_single(struct ldc_channel *lp,
void *buf, unsigned int len, void *buf, unsigned int len,
struct ldc_trans_cookie *cookies, int ncookies, struct ldc_trans_cookie *cookies, int ncookies,
unsigned int map_perm); unsigned int map_perm);
extern void ldc_unmap(struct ldc_channel *lp, struct ldc_trans_cookie *cookies, void ldc_unmap(struct ldc_channel *lp, struct ldc_trans_cookie *cookies,
int ncookies); int ncookies);
extern int ldc_copy(struct ldc_channel *lp, int copy_dir, int ldc_copy(struct ldc_channel *lp, int copy_dir,
void *buf, unsigned int len, unsigned long offset, void *buf, unsigned int len, unsigned long offset,
struct ldc_trans_cookie *cookies, int ncookies); struct ldc_trans_cookie *cookies, int ncookies);
static inline int ldc_get_dring_entry(struct ldc_channel *lp, static inline int ldc_get_dring_entry(struct ldc_channel *lp,
void *buf, unsigned int len, void *buf, unsigned int len,
...@@ -127,12 +127,12 @@ static inline int ldc_put_dring_entry(struct ldc_channel *lp, ...@@ -127,12 +127,12 @@ static inline int ldc_put_dring_entry(struct ldc_channel *lp,
return ldc_copy(lp, LDC_COPY_OUT, buf, len, offset, cookies, ncookies); return ldc_copy(lp, LDC_COPY_OUT, buf, len, offset, cookies, ncookies);
} }
extern void *ldc_alloc_exp_dring(struct ldc_channel *lp, unsigned int len, void *ldc_alloc_exp_dring(struct ldc_channel *lp, unsigned int len,
struct ldc_trans_cookie *cookies, struct ldc_trans_cookie *cookies,
int *ncookies, unsigned int map_perm); int *ncookies, unsigned int map_perm);
extern void ldc_free_exp_dring(struct ldc_channel *lp, void *buf, void ldc_free_exp_dring(struct ldc_channel *lp, void *buf,
unsigned int len, unsigned int len,
struct ldc_trans_cookie *cookies, int ncookies); struct ldc_trans_cookie *cookies, int ncookies);
#endif /* _SPARC64_LDC_H */ #endif /* _SPARC64_LDC_H */
...@@ -82,8 +82,8 @@ static inline unsigned long leon_load_reg(unsigned long paddr) ...@@ -82,8 +82,8 @@ static inline unsigned long leon_load_reg(unsigned long paddr)
#define LEON_BYPASS_LOAD_PA(x) leon_load_reg((unsigned long)(x)) #define LEON_BYPASS_LOAD_PA(x) leon_load_reg((unsigned long)(x))
#define LEON_BYPASS_STORE_PA(x, v) leon_store_reg((unsigned long)(x), (unsigned long)(v)) #define LEON_BYPASS_STORE_PA(x, v) leon_store_reg((unsigned long)(x), (unsigned long)(v))
extern void leon_switch_mm(void); void leon_switch_mm(void);
extern void leon_init_IRQ(void); void leon_init_IRQ(void);
static inline unsigned long sparc_leon3_get_dcachecfg(void) static inline unsigned long sparc_leon3_get_dcachecfg(void)
{ {
...@@ -196,14 +196,14 @@ static inline int sparc_leon3_cpuid(void) ...@@ -196,14 +196,14 @@ static inline int sparc_leon3_cpuid(void)
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
struct vm_area_struct; struct vm_area_struct;
extern unsigned long leon_swprobe(unsigned long vaddr, unsigned long *paddr); unsigned long leon_swprobe(unsigned long vaddr, unsigned long *paddr);
extern void leon_flush_icache_all(void); void leon_flush_icache_all(void);
extern void leon_flush_dcache_all(void); void leon_flush_dcache_all(void);
extern void leon_flush_cache_all(void); void leon_flush_cache_all(void);
extern void leon_flush_tlb_all(void); void leon_flush_tlb_all(void);
extern int leon_flush_during_switch; extern int leon_flush_during_switch;
extern int leon_flush_needed(void); int leon_flush_needed(void);
extern void leon_flush_pcache_all(struct vm_area_struct *vma, unsigned long page); void leon_flush_pcache_all(struct vm_area_struct *vma, unsigned long page);
/* struct that hold LEON3 cache configuration registers */ /* struct that hold LEON3 cache configuration registers */
struct leon3_cacheregs { struct leon3_cacheregs {
...@@ -217,29 +217,29 @@ struct leon3_cacheregs { ...@@ -217,29 +217,29 @@ struct leon3_cacheregs {
struct device_node; struct device_node;
struct task_struct; struct task_struct;
extern unsigned int leon_build_device_irq(unsigned int real_irq, unsigned int leon_build_device_irq(unsigned int real_irq,
irq_flow_handler_t flow_handler, irq_flow_handler_t flow_handler,
const char *name, int do_ack); const char *name, int do_ack);
extern void leon_update_virq_handling(unsigned int virq, void leon_update_virq_handling(unsigned int virq,
irq_flow_handler_t flow_handler, irq_flow_handler_t flow_handler,
const char *name, int do_ack); const char *name, int do_ack);
extern void leon_init_timers(void); void leon_init_timers(void);
extern void leon_trans_init(struct device_node *dp); void leon_trans_init(struct device_node *dp);
extern void leon_node_init(struct device_node *dp, struct device_node ***nextp); void leon_node_init(struct device_node *dp, struct device_node ***nextp);
extern void init_leon(void); void init_leon(void);
extern void poke_leonsparc(void); void poke_leonsparc(void);
extern void leon3_getCacheRegs(struct leon3_cacheregs *regs); void leon3_getCacheRegs(struct leon3_cacheregs *regs);
extern int leon3_ticker_irq; extern int leon3_ticker_irq;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern int leon_smp_nrcpus(void); int leon_smp_nrcpus(void);
extern void leon_clear_profile_irq(int cpu); void leon_clear_profile_irq(int cpu);
extern void leon_smp_done(void); void leon_smp_done(void);
extern void leon_boot_cpus(void); void leon_boot_cpus(void);
extern int leon_boot_one_cpu(int i, struct task_struct *); int leon_boot_one_cpu(int i, struct task_struct *);
void leon_init_smp(void); void leon_init_smp(void);
void leon_enable_irq_cpu(unsigned int irq_nr, unsigned int cpu); void leon_enable_irq_cpu(unsigned int irq_nr, unsigned int cpu);
extern irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused); irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused);
extern unsigned int smpleon_ipi[]; extern unsigned int smpleon_ipi[];
extern unsigned int linux_trap_ipi15_leon[]; extern unsigned int linux_trap_ipi15_leon[];
......
...@@ -16,7 +16,7 @@ struct leon_pci_info { ...@@ -16,7 +16,7 @@ struct leon_pci_info {
int (*map_irq)(const struct pci_dev *dev, u8 slot, u8 pin); int (*map_irq)(const struct pci_dev *dev, u8 slot, u8 pin);
}; };
extern void leon_pci_init(struct platform_device *ofdev, void leon_pci_init(struct platform_device *ofdev,
struct leon_pci_info *info); struct leon_pci_info *info);
#endif /* _ASM_LEON_PCI_H_ */ #endif /* _ASM_LEON_PCI_H_ */
#ifndef ___ASM_SPARC_MC146818RTC_H #ifndef ___ASM_SPARC_MC146818RTC_H
#define ___ASM_SPARC_MC146818RTC_H #define ___ASM_SPARC_MC146818RTC_H
#include <linux/spinlock.h>
extern spinlock_t rtc_lock;
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm/mc146818rtc_64.h> #include <asm/mc146818rtc_64.h>
#else #else
......
...@@ -12,13 +12,13 @@ struct mdesc_handle; ...@@ -12,13 +12,13 @@ struct mdesc_handle;
* the first argument to all of the operational calls that work * the first argument to all of the operational calls that work
* on mdescs. * on mdescs.
*/ */
extern struct mdesc_handle *mdesc_grab(void); struct mdesc_handle *mdesc_grab(void);
extern void mdesc_release(struct mdesc_handle *); void mdesc_release(struct mdesc_handle *);
#define MDESC_NODE_NULL (~(u64)0) #define MDESC_NODE_NULL (~(u64)0)
extern u64 mdesc_node_by_name(struct mdesc_handle *handle, u64 mdesc_node_by_name(struct mdesc_handle *handle,
u64 from_node, const char *name); u64 from_node, const char *name);
#define mdesc_for_each_node_by_name(__hdl, __node, __name) \ #define mdesc_for_each_node_by_name(__hdl, __node, __name) \
for (__node = mdesc_node_by_name(__hdl, MDESC_NODE_NULL, __name); \ for (__node = mdesc_node_by_name(__hdl, MDESC_NODE_NULL, __name); \
(__node) != MDESC_NODE_NULL; \ (__node) != MDESC_NODE_NULL; \
...@@ -34,9 +34,9 @@ extern u64 mdesc_node_by_name(struct mdesc_handle *handle, ...@@ -34,9 +34,9 @@ extern u64 mdesc_node_by_name(struct mdesc_handle *handle,
* *
* These same rules apply to mdesc_node_name(). * These same rules apply to mdesc_node_name().
*/ */
extern const void *mdesc_get_property(struct mdesc_handle *handle, const void *mdesc_get_property(struct mdesc_handle *handle,
u64 node, const char *name, int *lenp); u64 node, const char *name, int *lenp);
extern const char *mdesc_node_name(struct mdesc_handle *hp, u64 node); const char *mdesc_node_name(struct mdesc_handle *hp, u64 node);
/* MD arc iteration, the standard sequence is: /* MD arc iteration, the standard sequence is:
* *
...@@ -50,16 +50,16 @@ extern const char *mdesc_node_name(struct mdesc_handle *hp, u64 node); ...@@ -50,16 +50,16 @@ extern const char *mdesc_node_name(struct mdesc_handle *hp, u64 node);
#define MDESC_ARC_TYPE_FWD "fwd" #define MDESC_ARC_TYPE_FWD "fwd"
#define MDESC_ARC_TYPE_BACK "back" #define MDESC_ARC_TYPE_BACK "back"
extern u64 mdesc_next_arc(struct mdesc_handle *handle, u64 from, u64 mdesc_next_arc(struct mdesc_handle *handle, u64 from,
const char *arc_type); const char *arc_type);
#define mdesc_for_each_arc(__arc, __hdl, __node, __type) \ #define mdesc_for_each_arc(__arc, __hdl, __node, __type) \
for (__arc = mdesc_next_arc(__hdl, __node, __type); \ for (__arc = mdesc_next_arc(__hdl, __node, __type); \
(__arc) != MDESC_NODE_NULL; \ (__arc) != MDESC_NODE_NULL; \
__arc = mdesc_next_arc(__hdl, __arc, __type)) __arc = mdesc_next_arc(__hdl, __arc, __type))
extern u64 mdesc_arc_target(struct mdesc_handle *hp, u64 arc); u64 mdesc_arc_target(struct mdesc_handle *hp, u64 arc);
extern void mdesc_update(void); void mdesc_update(void);
struct mdesc_notifier_client { struct mdesc_notifier_client {
void (*add)(struct mdesc_handle *handle, u64 node); void (*add)(struct mdesc_handle *handle, u64 node);
...@@ -69,12 +69,12 @@ struct mdesc_notifier_client { ...@@ -69,12 +69,12 @@ struct mdesc_notifier_client {
struct mdesc_notifier_client *next; struct mdesc_notifier_client *next;
}; };
extern void mdesc_register_notifier(struct mdesc_notifier_client *client); void mdesc_register_notifier(struct mdesc_notifier_client *client);
extern void mdesc_fill_in_cpu_data(cpumask_t *mask); void mdesc_fill_in_cpu_data(cpumask_t *mask);
extern void mdesc_populate_present_mask(cpumask_t *mask); void mdesc_populate_present_mask(cpumask_t *mask);
extern void mdesc_get_page_sizes(cpumask_t *mask, unsigned long *pgsz_mask); void mdesc_get_page_sizes(cpumask_t *mask, unsigned long *pgsz_mask);
extern void sun4v_mdesc_init(void); void sun4v_mdesc_init(void);
#endif #endif
...@@ -67,9 +67,9 @@ struct tsb { ...@@ -67,9 +67,9 @@ struct tsb {
unsigned long pte; unsigned long pte;
} __attribute__((aligned(TSB_ENTRY_ALIGNMENT))); } __attribute__((aligned(TSB_ENTRY_ALIGNMENT)));
extern void __tsb_insert(unsigned long ent, unsigned long tag, unsigned long pte); void __tsb_insert(unsigned long ent, unsigned long tag, unsigned long pte);
extern void tsb_flush(unsigned long ent, unsigned long tag); void tsb_flush(unsigned long ent, unsigned long tag);
extern void tsb_init(struct tsb *tsb, unsigned long size); void tsb_init(struct tsb *tsb, unsigned long size);
struct tsb_config { struct tsb_config {
struct tsb *tsb; struct tsb *tsb;
......
...@@ -17,20 +17,20 @@ extern spinlock_t ctx_alloc_lock; ...@@ -17,20 +17,20 @@ extern spinlock_t ctx_alloc_lock;
extern unsigned long tlb_context_cache; extern unsigned long tlb_context_cache;
extern unsigned long mmu_context_bmap[]; extern unsigned long mmu_context_bmap[];
extern void get_new_mmu_context(struct mm_struct *mm); void get_new_mmu_context(struct mm_struct *mm);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_new_mmu_context_version(void); void smp_new_mmu_context_version(void);
#else #else
#define smp_new_mmu_context_version() do { } while (0) #define smp_new_mmu_context_version() do { } while (0)
#endif #endif
extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm); int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
extern void destroy_context(struct mm_struct *mm); void destroy_context(struct mm_struct *mm);
extern void __tsb_context_switch(unsigned long pgd_pa, void __tsb_context_switch(unsigned long pgd_pa,
struct tsb_config *tsb_base, struct tsb_config *tsb_base,
struct tsb_config *tsb_huge, struct tsb_config *tsb_huge,
unsigned long tsb_descr_pa); unsigned long tsb_descr_pa);
static inline void tsb_context_switch(struct mm_struct *mm) static inline void tsb_context_switch(struct mm_struct *mm)
{ {
...@@ -46,9 +46,11 @@ static inline void tsb_context_switch(struct mm_struct *mm) ...@@ -46,9 +46,11 @@ static inline void tsb_context_switch(struct mm_struct *mm)
, __pa(&mm->context.tsb_descr[0])); , __pa(&mm->context.tsb_descr[0]));
} }
extern void tsb_grow(struct mm_struct *mm, unsigned long tsb_index, unsigned long mm_rss); void tsb_grow(struct mm_struct *mm,
unsigned long tsb_index,
unsigned long mm_rss);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_tsb_sync(struct mm_struct *mm); void smp_tsb_sync(struct mm_struct *mm);
#else #else
#define smp_tsb_sync(__mm) do { } while (0) #define smp_tsb_sync(__mm) do { } while (0)
#endif #endif
...@@ -66,7 +68,7 @@ extern void smp_tsb_sync(struct mm_struct *mm); ...@@ -66,7 +68,7 @@ extern void smp_tsb_sync(struct mm_struct *mm);
: "r" (CTX_HWBITS((__mm)->context)), \ : "r" (CTX_HWBITS((__mm)->context)), \
"r" (SECONDARY_CONTEXT), "i" (ASI_DMMU), "i" (ASI_MMU)) "r" (SECONDARY_CONTEXT), "i" (ASI_DMMU), "i" (ASI_MMU))
extern void __flush_tlb_mm(unsigned long, unsigned long); void __flush_tlb_mm(unsigned long, unsigned long);
/* Switch the current MM context. */ /* Switch the current MM context. */
static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, struct task_struct *tsk) static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, struct task_struct *tsk)
......
#ifndef __NMI_H #ifndef __NMI_H
#define __NMI_H #define __NMI_H
extern int __init nmi_init(void); int __init nmi_init(void);
extern void perfctr_irq(int irq, struct pt_regs *regs); void perfctr_irq(int irq, struct pt_regs *regs);
extern void nmi_adjust_hz(unsigned int new_hz); void nmi_adjust_hz(unsigned int new_hz);
extern atomic_t nmi_active; extern atomic_t nmi_active;
extern void start_nmi_watchdog(void *unused); void start_nmi_watchdog(void *unused);
extern void stop_nmi_watchdog(void *unused); void stop_nmi_watchdog(void *unused);
#endif /* __NMI_H */ #endif /* __NMI_H */
...@@ -43,28 +43,28 @@ extern struct linux_nodeops *prom_nodeops; ...@@ -43,28 +43,28 @@ extern struct linux_nodeops *prom_nodeops;
/* You must call prom_init() before using any of the library services, /* You must call prom_init() before using any of the library services,
* preferably as early as possible. Pass it the romvec pointer. * preferably as early as possible. Pass it the romvec pointer.
*/ */
extern void prom_init(struct linux_romvec *rom_ptr); void prom_init(struct linux_romvec *rom_ptr);
/* Boot argument acquisition, returns the boot command line string. */ /* Boot argument acquisition, returns the boot command line string. */
extern char *prom_getbootargs(void); char *prom_getbootargs(void);
/* Miscellaneous routines, don't really fit in any category per se. */ /* Miscellaneous routines, don't really fit in any category per se. */
/* Reboot the machine with the command line passed. */ /* Reboot the machine with the command line passed. */
extern void prom_reboot(char *boot_command); void prom_reboot(char *boot_command);
/* Evaluate the forth string passed. */ /* Evaluate the forth string passed. */
extern void prom_feval(char *forth_string); void prom_feval(char *forth_string);
/* Enter the prom, with possibility of continuation with the 'go' /* Enter the prom, with possibility of continuation with the 'go'
* command in newer proms. * command in newer proms.
*/ */
extern void prom_cmdline(void); void prom_cmdline(void);
/* Enter the prom, with no chance of continuation for the stand-alone /* Enter the prom, with no chance of continuation for the stand-alone
* which calls this. * which calls this.
*/ */
extern void __noreturn prom_halt(void); void __noreturn prom_halt(void);
/* Set the PROM 'sync' callback function to the passed function pointer. /* Set the PROM 'sync' callback function to the passed function pointer.
* When the user gives the 'sync' command at the prom prompt while the * When the user gives the 'sync' command at the prom prompt while the
...@@ -73,37 +73,37 @@ extern void __noreturn prom_halt(void); ...@@ -73,37 +73,37 @@ extern void __noreturn prom_halt(void);
* XXX The arguments are different on V0 vs. V2->higher proms, grrr! XXX * XXX The arguments are different on V0 vs. V2->higher proms, grrr! XXX
*/ */
typedef void (*sync_func_t)(void); typedef void (*sync_func_t)(void);
extern void prom_setsync(sync_func_t func_ptr); void prom_setsync(sync_func_t func_ptr);
/* Acquire the IDPROM of the root node in the prom device tree. This /* Acquire the IDPROM of the root node in the prom device tree. This
* gets passed a buffer where you would like it stuffed. The return value * gets passed a buffer where you would like it stuffed. The return value
* is the format type of this idprom or 0xff on error. * is the format type of this idprom or 0xff on error.
*/ */
extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size); unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size);
/* Get the prom major version. */ /* Get the prom major version. */
extern int prom_version(void); int prom_version(void);
/* Get the prom plugin revision. */ /* Get the prom plugin revision. */
extern int prom_getrev(void); int prom_getrev(void);
/* Get the prom firmware revision. */ /* Get the prom firmware revision. */
extern int prom_getprev(void); int prom_getprev(void);
/* Write a buffer of characters to the console. */ /* Write a buffer of characters to the console. */
extern void prom_console_write_buf(const char *buf, int len); void prom_console_write_buf(const char *buf, int len);
/* Prom's internal routines, don't use in kernel/boot code. */ /* Prom's internal routines, don't use in kernel/boot code. */
extern __printf(1, 2) void prom_printf(const char *fmt, ...); __printf(1, 2) void prom_printf(const char *fmt, ...);
extern void prom_write(const char *buf, unsigned int len); void prom_write(const char *buf, unsigned int len);
/* Multiprocessor operations... */ /* Multiprocessor operations... */
/* Start the CPU with the given device tree node, context table, and context /* Start the CPU with the given device tree node, context table, and context
* at the passed program counter. * at the passed program counter.
*/ */
extern int prom_startcpu(int cpunode, struct linux_prom_registers *context_table, int prom_startcpu(int cpunode, struct linux_prom_registers *context_table,
int context, char *program_counter); int context, char *program_counter);
/* Initialize the memory lists based upon the prom version. */ /* Initialize the memory lists based upon the prom version. */
void prom_meminit(void); void prom_meminit(void);
...@@ -111,65 +111,65 @@ void prom_meminit(void); ...@@ -111,65 +111,65 @@ void prom_meminit(void);
/* PROM device tree traversal functions... */ /* PROM device tree traversal functions... */
/* Get the child node of the given node, or zero if no child exists. */ /* Get the child node of the given node, or zero if no child exists. */
extern phandle prom_getchild(phandle parent_node); phandle prom_getchild(phandle parent_node);
/* Get the next sibling node of the given node, or zero if no further /* Get the next sibling node of the given node, or zero if no further
* siblings exist. * siblings exist.
*/ */
extern phandle prom_getsibling(phandle node); phandle prom_getsibling(phandle node);
/* Get the length, at the passed node, of the given property type. /* Get the length, at the passed node, of the given property type.
* Returns -1 on error (ie. no such property at this node). * Returns -1 on error (ie. no such property at this node).
*/ */
extern int prom_getproplen(phandle thisnode, const char *property); int prom_getproplen(phandle thisnode, const char *property);
/* Fetch the requested property using the given buffer. Returns /* Fetch the requested property using the given buffer. Returns
* the number of bytes the prom put into your buffer or -1 on error. * the number of bytes the prom put into your buffer or -1 on error.
*/ */
extern int __must_check prom_getproperty(phandle thisnode, const char *property, int __must_check prom_getproperty(phandle thisnode, const char *property,
char *prop_buffer, int propbuf_size); char *prop_buffer, int propbuf_size);
/* Acquire an integer property. */ /* Acquire an integer property. */
extern int prom_getint(phandle node, char *property); int prom_getint(phandle node, char *property);
/* Acquire an integer property, with a default value. */ /* Acquire an integer property, with a default value. */
extern int prom_getintdefault(phandle node, char *property, int defval); int prom_getintdefault(phandle node, char *property, int defval);
/* Acquire a boolean property, 0=FALSE 1=TRUE. */ /* Acquire a boolean property, 0=FALSE 1=TRUE. */
extern int prom_getbool(phandle node, char *prop); int prom_getbool(phandle node, char *prop);
/* Acquire a string property, null string on error. */ /* Acquire a string property, null string on error. */
extern void prom_getstring(phandle node, char *prop, char *buf, int bufsize); void prom_getstring(phandle node, char *prop, char *buf, int bufsize);
/* Search all siblings starting at the passed node for "name" matching /* Search all siblings starting at the passed node for "name" matching
* the given string. Returns the node on success, zero on failure. * the given string. Returns the node on success, zero on failure.
*/ */
extern phandle prom_searchsiblings(phandle node_start, char *name); phandle prom_searchsiblings(phandle node_start, char *name);
/* Returns the next property after the passed property for the given /* Returns the next property after the passed property for the given
* node. Returns null string on failure. * node. Returns null string on failure.
*/ */
extern char *prom_nextprop(phandle node, char *prev_property, char *buffer); char *prom_nextprop(phandle node, char *prev_property, char *buffer);
/* Returns phandle of the path specified */ /* Returns phandle of the path specified */
extern phandle prom_finddevice(char *name); phandle prom_finddevice(char *name);
/* Set the indicated property at the given node with the passed value. /* Set the indicated property at the given node with the passed value.
* Returns the number of bytes of your value that the prom took. * Returns the number of bytes of your value that the prom took.
*/ */
extern int prom_setprop(phandle node, const char *prop_name, char *prop_value, int prom_setprop(phandle node, const char *prop_name, char *prop_value,
int value_size); int value_size);
extern phandle prom_inst2pkg(int); phandle prom_inst2pkg(int);
/* Dorking with Bus ranges... */ /* Dorking with Bus ranges... */
/* Apply promlib probes OBIO ranges to registers. */ /* Apply promlib probes OBIO ranges to registers. */
extern void prom_apply_obio_ranges(struct linux_prom_registers *obioregs, int nregs); void prom_apply_obio_ranges(struct linux_prom_registers *obioregs, int nregs);
/* Apply ranges of any prom node (and optionally parent node as well) to registers. */ /* Apply ranges of any prom node (and optionally parent node as well) to registers. */
extern void prom_apply_generic_ranges(phandle node, phandle parent, void prom_apply_generic_ranges(phandle node, phandle parent,
struct linux_prom_registers *sbusregs, int nregs); struct linux_prom_registers *sbusregs, int nregs);
void prom_ranges_init(void); void prom_ranges_init(void);
......
...@@ -62,100 +62,100 @@ struct linux_mem_p1275 { ...@@ -62,100 +62,100 @@ struct linux_mem_p1275 {
/* You must call prom_init() before using any of the library services, /* You must call prom_init() before using any of the library services,
* preferably as early as possible. Pass it the romvec pointer. * preferably as early as possible. Pass it the romvec pointer.
*/ */
extern void prom_init(void *cif_handler, void *cif_stack); void prom_init(void *cif_handler, void *cif_stack);
/* Boot argument acquisition, returns the boot command line string. */ /* Boot argument acquisition, returns the boot command line string. */
extern char *prom_getbootargs(void); char *prom_getbootargs(void);
/* Miscellaneous routines, don't really fit in any category per se. */ /* Miscellaneous routines, don't really fit in any category per se. */
/* Reboot the machine with the command line passed. */ /* Reboot the machine with the command line passed. */
extern void prom_reboot(const char *boot_command); void prom_reboot(const char *boot_command);
/* Evaluate the forth string passed. */ /* Evaluate the forth string passed. */
extern void prom_feval(const char *forth_string); void prom_feval(const char *forth_string);
/* Enter the prom, with possibility of continuation with the 'go' /* Enter the prom, with possibility of continuation with the 'go'
* command in newer proms. * command in newer proms.
*/ */
extern void prom_cmdline(void); void prom_cmdline(void);
/* Enter the prom, with no chance of continuation for the stand-alone /* Enter the prom, with no chance of continuation for the stand-alone
* which calls this. * which calls this.
*/ */
extern void prom_halt(void) __attribute__ ((noreturn)); void prom_halt(void) __attribute__ ((noreturn));
/* Halt and power-off the machine. */ /* Halt and power-off the machine. */
extern void prom_halt_power_off(void) __attribute__ ((noreturn)); void prom_halt_power_off(void) __attribute__ ((noreturn));
/* Acquire the IDPROM of the root node in the prom device tree. This /* Acquire the IDPROM of the root node in the prom device tree. This
* gets passed a buffer where you would like it stuffed. The return value * gets passed a buffer where you would like it stuffed. The return value
* is the format type of this idprom or 0xff on error. * is the format type of this idprom or 0xff on error.
*/ */
extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size); unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size);
/* Write a buffer of characters to the console. */ /* Write a buffer of characters to the console. */
extern void prom_console_write_buf(const char *buf, int len); void prom_console_write_buf(const char *buf, int len);
/* Prom's internal routines, don't use in kernel/boot code. */ /* Prom's internal routines, don't use in kernel/boot code. */
extern __printf(1, 2) void prom_printf(const char *fmt, ...); __printf(1, 2) void prom_printf(const char *fmt, ...);
extern void prom_write(const char *buf, unsigned int len); void prom_write(const char *buf, unsigned int len);
/* Multiprocessor operations... */ /* Multiprocessor operations... */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* Start the CPU with the given device tree node at the passed program /* Start the CPU with the given device tree node at the passed program
* counter with the given arg passed in via register %o0. * counter with the given arg passed in via register %o0.
*/ */
extern void prom_startcpu(int cpunode, unsigned long pc, unsigned long arg); void prom_startcpu(int cpunode, unsigned long pc, unsigned long arg);
/* Start the CPU with the given cpu ID at the passed program /* Start the CPU with the given cpu ID at the passed program
* counter with the given arg passed in via register %o0. * counter with the given arg passed in via register %o0.
*/ */
extern void prom_startcpu_cpuid(int cpuid, unsigned long pc, unsigned long arg); void prom_startcpu_cpuid(int cpuid, unsigned long pc, unsigned long arg);
/* Stop the CPU with the given cpu ID. */ /* Stop the CPU with the given cpu ID. */
extern void prom_stopcpu_cpuid(int cpuid); void prom_stopcpu_cpuid(int cpuid);
/* Stop the current CPU. */ /* Stop the current CPU. */
extern void prom_stopself(void); void prom_stopself(void);
/* Idle the current CPU. */ /* Idle the current CPU. */
extern void prom_idleself(void); void prom_idleself(void);
/* Resume the CPU with the passed device tree node. */ /* Resume the CPU with the passed device tree node. */
extern void prom_resumecpu(int cpunode); void prom_resumecpu(int cpunode);
#endif #endif
/* Power management interfaces. */ /* Power management interfaces. */
/* Put the current CPU to sleep. */ /* Put the current CPU to sleep. */
extern void prom_sleepself(void); void prom_sleepself(void);
/* Put the entire system to sleep. */ /* Put the entire system to sleep. */
extern int prom_sleepsystem(void); int prom_sleepsystem(void);
/* Initiate a wakeup event. */ /* Initiate a wakeup event. */
extern int prom_wakeupsystem(void); int prom_wakeupsystem(void);
/* MMU and memory related OBP interfaces. */ /* MMU and memory related OBP interfaces. */
/* Get unique string identifying SIMM at given physical address. */ /* Get unique string identifying SIMM at given physical address. */
extern int prom_getunumber(int syndrome_code, int prom_getunumber(int syndrome_code,
unsigned long phys_addr, unsigned long phys_addr,
char *buf, int buflen); char *buf, int buflen);
/* Retain physical memory to the caller across soft resets. */ /* Retain physical memory to the caller across soft resets. */
extern int prom_retain(const char *name, unsigned long size, int prom_retain(const char *name, unsigned long size,
unsigned long align, unsigned long *paddr); unsigned long align, unsigned long *paddr);
/* Load explicit I/D TLB entries into the calling processor. */ /* Load explicit I/D TLB entries into the calling processor. */
extern long prom_itlb_load(unsigned long index, long prom_itlb_load(unsigned long index,
unsigned long tte_data, unsigned long tte_data,
unsigned long vaddr); unsigned long vaddr);
extern long prom_dtlb_load(unsigned long index, long prom_dtlb_load(unsigned long index,
unsigned long tte_data, unsigned long tte_data,
unsigned long vaddr); unsigned long vaddr);
/* Map/Unmap client program address ranges. First the format of /* Map/Unmap client program address ranges. First the format of
* the mapping mode argument. * the mapping mode argument.
...@@ -170,81 +170,81 @@ extern long prom_dtlb_load(unsigned long index, ...@@ -170,81 +170,81 @@ extern long prom_dtlb_load(unsigned long index,
#define PROM_MAP_IE 0x0100 /* Invert-Endianness */ #define PROM_MAP_IE 0x0100 /* Invert-Endianness */
#define PROM_MAP_DEFAULT (PROM_MAP_WRITE | PROM_MAP_READ | PROM_MAP_EXEC | PROM_MAP_CACHED) #define PROM_MAP_DEFAULT (PROM_MAP_WRITE | PROM_MAP_READ | PROM_MAP_EXEC | PROM_MAP_CACHED)
extern int prom_map(int mode, unsigned long size, int prom_map(int mode, unsigned long size,
unsigned long vaddr, unsigned long paddr); unsigned long vaddr, unsigned long paddr);
extern void prom_unmap(unsigned long size, unsigned long vaddr); void prom_unmap(unsigned long size, unsigned long vaddr);
/* PROM device tree traversal functions... */ /* PROM device tree traversal functions... */
/* Get the child node of the given node, or zero if no child exists. */ /* Get the child node of the given node, or zero if no child exists. */
extern phandle prom_getchild(phandle parent_node); phandle prom_getchild(phandle parent_node);
/* Get the next sibling node of the given node, or zero if no further /* Get the next sibling node of the given node, or zero if no further
* siblings exist. * siblings exist.
*/ */
extern phandle prom_getsibling(phandle node); phandle prom_getsibling(phandle node);
/* Get the length, at the passed node, of the given property type. /* Get the length, at the passed node, of the given property type.
* Returns -1 on error (ie. no such property at this node). * Returns -1 on error (ie. no such property at this node).
*/ */
extern int prom_getproplen(phandle thisnode, const char *property); int prom_getproplen(phandle thisnode, const char *property);
/* Fetch the requested property using the given buffer. Returns /* Fetch the requested property using the given buffer. Returns
* the number of bytes the prom put into your buffer or -1 on error. * the number of bytes the prom put into your buffer or -1 on error.
*/ */
extern int prom_getproperty(phandle thisnode, const char *property, int prom_getproperty(phandle thisnode, const char *property,
char *prop_buffer, int propbuf_size); char *prop_buffer, int propbuf_size);
/* Acquire an integer property. */ /* Acquire an integer property. */
extern int prom_getint(phandle node, const char *property); int prom_getint(phandle node, const char *property);
/* Acquire an integer property, with a default value. */ /* Acquire an integer property, with a default value. */
extern int prom_getintdefault(phandle node, const char *property, int defval); int prom_getintdefault(phandle node, const char *property, int defval);
/* Acquire a boolean property, 0=FALSE 1=TRUE. */ /* Acquire a boolean property, 0=FALSE 1=TRUE. */
extern int prom_getbool(phandle node, const char *prop); int prom_getbool(phandle node, const char *prop);
/* Acquire a string property, null string on error. */ /* Acquire a string property, null string on error. */
extern void prom_getstring(phandle node, const char *prop, char *buf, void prom_getstring(phandle node, const char *prop, char *buf,
int bufsize); int bufsize);
/* Does the passed node have the given "name"? YES=1 NO=0 */ /* Does the passed node have the given "name"? YES=1 NO=0 */
extern int prom_nodematch(phandle thisnode, const char *name); int prom_nodematch(phandle thisnode, const char *name);
/* Search all siblings starting at the passed node for "name" matching /* Search all siblings starting at the passed node for "name" matching
* the given string. Returns the node on success, zero on failure. * the given string. Returns the node on success, zero on failure.
*/ */
extern phandle prom_searchsiblings(phandle node_start, const char *name); phandle prom_searchsiblings(phandle node_start, const char *name);
/* Return the first property type, as a string, for the given node. /* Return the first property type, as a string, for the given node.
* Returns a null string on error. Buffer should be at least 32B long. * Returns a null string on error. Buffer should be at least 32B long.
*/ */
extern char *prom_firstprop(phandle node, char *buffer); char *prom_firstprop(phandle node, char *buffer);
/* Returns the next property after the passed property for the given /* Returns the next property after the passed property for the given
* node. Returns null string on failure. Buffer should be at least 32B long. * node. Returns null string on failure. Buffer should be at least 32B long.
*/ */
extern char *prom_nextprop(phandle node, const char *prev_property, char *buf); char *prom_nextprop(phandle node, const char *prev_property, char *buf);
/* Returns 1 if the specified node has given property. */ /* Returns 1 if the specified node has given property. */
extern int prom_node_has_property(phandle node, const char *property); int prom_node_has_property(phandle node, const char *property);
/* Returns phandle of the path specified */ /* Returns phandle of the path specified */
extern phandle prom_finddevice(const char *name); phandle prom_finddevice(const char *name);
/* Set the indicated property at the given node with the passed value. /* Set the indicated property at the given node with the passed value.
* Returns the number of bytes of your value that the prom took. * Returns the number of bytes of your value that the prom took.
*/ */
extern int prom_setprop(phandle node, const char *prop_name, char *prop_value, int prom_setprop(phandle node, const char *prop_name, char *prop_value,
int value_size); int value_size);
extern phandle prom_inst2pkg(int); phandle prom_inst2pkg(int);
extern void prom_sun4v_guest_soft_state(void); void prom_sun4v_guest_soft_state(void);
extern int prom_ihandle2path(int handle, char *buffer, int bufsize); int prom_ihandle2path(int handle, char *buffer, int bufsize);
/* Client interface level routines. */ /* Client interface level routines. */
extern void p1275_cmd_direct(unsigned long *); void p1275_cmd_direct(unsigned long *);
#endif /* !(__SPARC64_OPLIB_H) */ #endif /* !(__SPARC64_OPLIB_H) */
...@@ -31,17 +31,17 @@ ...@@ -31,17 +31,17 @@
#if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE)
struct pt_regs; struct pt_regs;
extern void hugetlb_setup(struct pt_regs *regs); void hugetlb_setup(struct pt_regs *regs);
#endif #endif
#define WANT_PAGE_VIRTUAL #define WANT_PAGE_VIRTUAL
extern void _clear_page(void *page); void _clear_page(void *page);
#define clear_page(X) _clear_page((void *)(X)) #define clear_page(X) _clear_page((void *)(X))
struct page; struct page;
extern void clear_user_page(void *addr, unsigned long vaddr, struct page *page); void clear_user_page(void *addr, unsigned long vaddr, struct page *page);
#define copy_page(X,Y) memcpy((void *)(X), (void *)(Y), PAGE_SIZE) #define copy_page(X,Y) memcpy((void *)(X), (void *)(Y), PAGE_SIZE)
extern void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage); void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage);
/* Unlike sparc32, sparc64's parameter passing API is more /* Unlike sparc32, sparc64's parameter passing API is more
* sane in that structures which as small enough are passed * sane in that structures which as small enough are passed
......
...@@ -57,7 +57,7 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, ...@@ -57,7 +57,7 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev,
/* Return the index of the PCI controller for device PDEV. */ /* Return the index of the PCI controller for device PDEV. */
extern int pci_domain_nr(struct pci_bus *bus); int pci_domain_nr(struct pci_bus *bus);
static inline int pci_proc_domain(struct pci_bus *bus) static inline int pci_proc_domain(struct pci_bus *bus)
{ {
return 1; return 1;
...@@ -69,9 +69,9 @@ static inline int pci_proc_domain(struct pci_bus *bus) ...@@ -69,9 +69,9 @@ static inline int pci_proc_domain(struct pci_bus *bus)
#define HAVE_ARCH_PCI_GET_UNMAPPED_AREA #define HAVE_ARCH_PCI_GET_UNMAPPED_AREA
#define get_pci_unmapped_area get_fb_unmapped_area #define get_pci_unmapped_area get_fb_unmapped_area
extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
enum pci_mmap_state mmap_state, enum pci_mmap_state mmap_state,
int write_combine); int write_combine);
static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
{ {
...@@ -79,9 +79,9 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) ...@@ -79,9 +79,9 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
} }
#define HAVE_ARCH_PCI_RESOURCE_TO_USER #define HAVE_ARCH_PCI_RESOURCE_TO_USER
extern void pci_resource_to_user(const struct pci_dev *dev, int bar, void pci_resource_to_user(const struct pci_dev *dev, int bar,
const struct resource *rsrc, const struct resource *rsrc,
resource_size_t *start, resource_size_t *end); resource_size_t *start, resource_size_t *end);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __SPARC64_PCI_H */ #endif /* __SPARC64_PCI_H */
...@@ -30,10 +30,10 @@ struct linux_pcic { ...@@ -30,10 +30,10 @@ struct linux_pcic {
}; };
#ifdef CONFIG_PCIC_PCI #ifdef CONFIG_PCIC_PCI
extern int pcic_present(void); int pcic_present(void);
extern int pcic_probe(void); int pcic_probe(void);
extern void pci_time_init(void); void pci_time_init(void);
extern void sun4m_pci_init_IRQ(void); void sun4m_pci_init_IRQ(void);
#else #else
static inline int pcic_present(void) { return 0; } static inline int pcic_present(void) { return 0; }
static inline int pcic_probe(void) { return 0; } static inline int pcic_probe(void) { return 0; }
......
...@@ -12,8 +12,8 @@ struct pcr_ops { ...@@ -12,8 +12,8 @@ struct pcr_ops {
}; };
extern const struct pcr_ops *pcr_ops; extern const struct pcr_ops *pcr_ops;
extern void deferred_pcr_work_irq(int irq, struct pt_regs *regs); void deferred_pcr_work_irq(int irq, struct pt_regs *regs);
extern void schedule_deferred_pcr_work(void); void schedule_deferred_pcr_work(void);
#define PCR_PIC_PRIV 0x00000001 /* PIC access is privileged */ #define PCR_PIC_PRIV 0x00000001 /* PIC access is privileged */
#define PCR_STRACE 0x00000002 /* Trace supervisor events */ #define PCR_STRACE 0x00000002 /* Trace supervisor events */
...@@ -45,6 +45,6 @@ extern void schedule_deferred_pcr_work(void); ...@@ -45,6 +45,6 @@ extern void schedule_deferred_pcr_work(void);
#define PCR_N4_PICNHT 0x00020000 /* PIC non-hypervisor trap */ #define PCR_N4_PICNHT 0x00020000 /* PIC non-hypervisor trap */
#define PCR_N4_NTC 0x00040000 /* Next-To-Commit wrap */ #define PCR_N4_NTC 0x00040000 /* Next-To-Commit wrap */
extern int pcr_arch_init(void); int pcr_arch_init(void);
#endif /* __PCR_H */ #endif /* __PCR_H */
...@@ -38,12 +38,12 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) ...@@ -38,12 +38,12 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
kmem_cache_free(pgtable_cache, pmd); kmem_cache_free(pgtable_cache, pmd);
} }
extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
unsigned long address); unsigned long address);
extern pgtable_t pte_alloc_one(struct mm_struct *mm, pgtable_t pte_alloc_one(struct mm_struct *mm,
unsigned long address); unsigned long address);
extern void pte_free_kernel(struct mm_struct *mm, pte_t *pte); void pte_free_kernel(struct mm_struct *mm, pte_t *pte);
extern void pte_free(struct mm_struct *mm, pgtable_t ptepage); void pte_free(struct mm_struct *mm, pgtable_t ptepage);
#define pmd_populate_kernel(MM, PMD, PTE) pmd_set(MM, PMD, PTE) #define pmd_populate_kernel(MM, PMD, PTE) pmd_set(MM, PMD, PTE)
#define pmd_populate(MM, PMD, PTE) pmd_set(MM, PMD, PTE) #define pmd_populate(MM, PMD, PTE) pmd_set(MM, PMD, PTE)
...@@ -51,12 +51,12 @@ extern void pte_free(struct mm_struct *mm, pgtable_t ptepage); ...@@ -51,12 +51,12 @@ extern void pte_free(struct mm_struct *mm, pgtable_t ptepage);
#define check_pgt_cache() do { } while (0) #define check_pgt_cache() do { } while (0)
extern void pgtable_free(void *table, bool is_page); void pgtable_free(void *table, bool is_page);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
struct mmu_gather; struct mmu_gather;
extern void tlb_remove_table(struct mmu_gather *, void *); void tlb_remove_table(struct mmu_gather *, void *);
static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, bool is_page) static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, bool is_page)
{ {
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
struct vm_area_struct; struct vm_area_struct;
struct page; struct page;
extern void load_mmu(void); void load_mmu(void);
extern unsigned long calc_highpages(void); unsigned long calc_highpages(void);
unsigned long __init bootmem_init(unsigned long *pages_avail); unsigned long __init bootmem_init(unsigned long *pages_avail);
#define pte_ERROR(e) __builtin_trap() #define pte_ERROR(e) __builtin_trap()
...@@ -57,7 +57,7 @@ unsigned long __init bootmem_init(unsigned long *pages_avail); ...@@ -57,7 +57,7 @@ unsigned long __init bootmem_init(unsigned long *pages_avail);
* srmmu.c will assign the real one (which is dynamically sized) */ * srmmu.c will assign the real one (which is dynamically sized) */
#define swapper_pg_dir NULL #define swapper_pg_dir NULL
extern void paging_init(void); void paging_init(void);
extern unsigned long ptr_in_current_pgd; extern unsigned long ptr_in_current_pgd;
...@@ -429,8 +429,8 @@ extern unsigned long *sparc_valid_addr_bitmap; ...@@ -429,8 +429,8 @@ extern unsigned long *sparc_valid_addr_bitmap;
#define GET_IOSPACE(pfn) (pfn >> (BITS_PER_LONG - 4)) #define GET_IOSPACE(pfn) (pfn >> (BITS_PER_LONG - 4))
#define GET_PFN(pfn) (pfn & 0x0fffffffUL) #define GET_PFN(pfn) (pfn & 0x0fffffffUL)
extern int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long, int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long,
unsigned long, pgprot_t); unsigned long, pgprot_t);
static inline int io_remap_pfn_range(struct vm_area_struct *vma, static inline int io_remap_pfn_range(struct vm_area_struct *vma,
unsigned long from, unsigned long pfn, unsigned long from, unsigned long pfn,
......
...@@ -188,9 +188,9 @@ ...@@ -188,9 +188,9 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
extern pte_t mk_pte_io(unsigned long, pgprot_t, int, unsigned long); pte_t mk_pte_io(unsigned long, pgprot_t, int, unsigned long);
extern unsigned long pte_sz_bits(unsigned long size); unsigned long pte_sz_bits(unsigned long size);
extern pgprot_t PAGE_KERNEL; extern pgprot_t PAGE_KERNEL;
extern pgprot_t PAGE_KERNEL_LOCKED; extern pgprot_t PAGE_KERNEL_LOCKED;
...@@ -758,8 +758,8 @@ static inline int pmd_present(pmd_t pmd) ...@@ -758,8 +758,8 @@ static inline int pmd_present(pmd_t pmd)
#define pmd_none(pmd) (!pmd_val(pmd)) #define pmd_none(pmd) (!pmd_val(pmd))
#ifdef CONFIG_TRANSPARENT_HUGEPAGE #ifdef CONFIG_TRANSPARENT_HUGEPAGE
extern void set_pmd_at(struct mm_struct *mm, unsigned long addr, void set_pmd_at(struct mm_struct *mm, unsigned long addr,
pmd_t *pmdp, pmd_t pmd); pmd_t *pmdp, pmd_t pmd);
#else #else
static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
pmd_t *pmdp, pmd_t pmd) pmd_t *pmdp, pmd_t pmd)
...@@ -821,8 +821,8 @@ static inline unsigned long __pmd_page(pmd_t pmd) ...@@ -821,8 +821,8 @@ static inline unsigned long __pmd_page(pmd_t pmd)
#define pte_unmap(pte) do { } while (0) #define pte_unmap(pte) do { } while (0)
/* Actual page table PTE updates. */ /* Actual page table PTE updates. */
extern void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr,
pte_t *ptep, pte_t orig, int fullmm); pte_t *ptep, pte_t orig, int fullmm);
#define __HAVE_ARCH_PMDP_GET_AND_CLEAR #define __HAVE_ARCH_PMDP_GET_AND_CLEAR
static inline pmd_t pmdp_get_and_clear(struct mm_struct *mm, static inline pmd_t pmdp_get_and_clear(struct mm_struct *mm,
...@@ -881,24 +881,24 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr, ...@@ -881,24 +881,24 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
extern pmd_t swapper_low_pmd_dir[PTRS_PER_PMD]; extern pmd_t swapper_low_pmd_dir[PTRS_PER_PMD];
extern void paging_init(void); void paging_init(void);
extern unsigned long find_ecache_flush_span(unsigned long size); unsigned long find_ecache_flush_span(unsigned long size);
struct seq_file; struct seq_file;
extern void mmu_info(struct seq_file *); void mmu_info(struct seq_file *);
struct vm_area_struct; struct vm_area_struct;
extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *); void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *);
#ifdef CONFIG_TRANSPARENT_HUGEPAGE #ifdef CONFIG_TRANSPARENT_HUGEPAGE
extern void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr, void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
pmd_t *pmd); pmd_t *pmd);
#define __HAVE_ARCH_PGTABLE_DEPOSIT #define __HAVE_ARCH_PGTABLE_DEPOSIT
extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
pgtable_t pgtable); pgtable_t pgtable);
#define __HAVE_ARCH_PGTABLE_WITHDRAW #define __HAVE_ARCH_PGTABLE_WITHDRAW
extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
#endif #endif
/* Encode and de-code a swap entry */ /* Encode and de-code a swap entry */
...@@ -914,9 +914,9 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); ...@@ -914,9 +914,9 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
#define __swp_entry_to_pte(x) ((pte_t) { (x).val }) #define __swp_entry_to_pte(x) ((pte_t) { (x).val })
/* File offset in PTE support. */ /* File offset in PTE support. */
extern unsigned long pte_file(pte_t); unsigned long pte_file(pte_t);
#define pte_to_pgoff(pte) (pte_val(pte) >> PAGE_SHIFT) #define pte_to_pgoff(pte) (pte_val(pte) >> PAGE_SHIFT)
extern pte_t pgoff_to_pte(unsigned long); pte_t pgoff_to_pte(unsigned long);
#define PTE_FILE_MAX_BITS (64UL - PAGE_SHIFT - 1UL) #define PTE_FILE_MAX_BITS (64UL - PAGE_SHIFT - 1UL)
extern unsigned long sparc64_valid_addr_bitmap[]; extern unsigned long sparc64_valid_addr_bitmap[];
...@@ -931,7 +931,7 @@ static inline bool kern_addr_valid(unsigned long addr) ...@@ -931,7 +931,7 @@ static inline bool kern_addr_valid(unsigned long addr)
return test_bit(paddr >> 22, sparc64_valid_addr_bitmap); return test_bit(paddr >> 22, sparc64_valid_addr_bitmap);
} }
extern int page_in_phys_avail(unsigned long paddr); int page_in_phys_avail(unsigned long paddr);
/* /*
* For sparc32&64, the pfn in io_remap_pfn_range() carries <iospace> in * For sparc32&64, the pfn in io_remap_pfn_range() carries <iospace> in
...@@ -941,8 +941,8 @@ extern int page_in_phys_avail(unsigned long paddr); ...@@ -941,8 +941,8 @@ extern int page_in_phys_avail(unsigned long paddr);
#define GET_IOSPACE(pfn) (pfn >> (BITS_PER_LONG - 4)) #define GET_IOSPACE(pfn) (pfn >> (BITS_PER_LONG - 4))
#define GET_PFN(pfn) (pfn & 0x0fffffffffffffffUL) #define GET_PFN(pfn) (pfn & 0x0fffffffffffffffUL)
extern int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long, int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long,
unsigned long, pgprot_t); unsigned long, pgprot_t);
static inline int io_remap_pfn_range(struct vm_area_struct *vma, static inline int io_remap_pfn_range(struct vm_area_struct *vma,
unsigned long from, unsigned long pfn, unsigned long from, unsigned long pfn,
...@@ -970,20 +970,20 @@ static inline int io_remap_pfn_range(struct vm_area_struct *vma, ...@@ -970,20 +970,20 @@ static inline int io_remap_pfn_range(struct vm_area_struct *vma,
/* We provide a special get_unmapped_area for framebuffer mmaps to try and use /* We provide a special get_unmapped_area for framebuffer mmaps to try and use
* the largest alignment possible such that larget PTEs can be used. * the largest alignment possible such that larget PTEs can be used.
*/ */
extern unsigned long get_fb_unmapped_area(struct file *filp, unsigned long, unsigned long get_fb_unmapped_area(struct file *filp, unsigned long,
unsigned long, unsigned long, unsigned long, unsigned long,
unsigned long); unsigned long);
#define HAVE_ARCH_FB_UNMAPPED_AREA #define HAVE_ARCH_FB_UNMAPPED_AREA
extern void pgtable_cache_init(void); void pgtable_cache_init(void);
extern void sun4v_register_fault_status(void); void sun4v_register_fault_status(void);
extern void sun4v_ktsb_register(void); void sun4v_ktsb_register(void);
extern void __init cheetah_ecache_flush_init(void); void __init cheetah_ecache_flush_init(void);
extern void sun4v_patch_tlb_handlers(void); void sun4v_patch_tlb_handlers(void);
extern unsigned long cmdline_memory_size; extern unsigned long cmdline_memory_size;
extern asmlinkage void do_sparc64_fault(struct pt_regs *regs); asmlinkage void do_sparc64_fault(struct pt_regs *regs);
#endif /* !(__ASSEMBLY__) */ #endif /* !(__ASSEMBLY__) */
......
...@@ -74,7 +74,7 @@ struct thread_struct { ...@@ -74,7 +74,7 @@ struct thread_struct {
} }
/* Return saved PC of a blocked thread. */ /* Return saved PC of a blocked thread. */
extern unsigned long thread_saved_pc(struct task_struct *t); unsigned long thread_saved_pc(struct task_struct *t);
/* Do necessary setup to start up a newly executed thread. */ /* Do necessary setup to start up a newly executed thread. */
static inline void start_thread(struct pt_regs * regs, unsigned long pc, static inline void start_thread(struct pt_regs * regs, unsigned long pc,
...@@ -107,7 +107,7 @@ static inline void start_thread(struct pt_regs * regs, unsigned long pc, ...@@ -107,7 +107,7 @@ static inline void start_thread(struct pt_regs * regs, unsigned long pc,
/* Free all resources held by a thread. */ /* Free all resources held by a thread. */
#define release_thread(tsk) do { } while(0) #define release_thread(tsk) do { } while(0)
extern unsigned long get_wchan(struct task_struct *); unsigned long get_wchan(struct task_struct *);
#define task_pt_regs(tsk) ((tsk)->thread.kregs) #define task_pt_regs(tsk) ((tsk)->thread.kregs)
#define KSTK_EIP(tsk) ((tsk)->thread.kregs->pc) #define KSTK_EIP(tsk) ((tsk)->thread.kregs->pc)
...@@ -116,6 +116,7 @@ extern unsigned long get_wchan(struct task_struct *); ...@@ -116,6 +116,7 @@ extern unsigned long get_wchan(struct task_struct *);
#ifdef __KERNEL__ #ifdef __KERNEL__
extern struct task_struct *last_task_used_math; extern struct task_struct *last_task_used_math;
int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
#define cpu_relax() barrier() #define cpu_relax() barrier()
extern void (*sparc_idle)(void); extern void (*sparc_idle)(void);
......
...@@ -95,7 +95,7 @@ struct thread_struct { ...@@ -95,7 +95,7 @@ struct thread_struct {
/* Return saved PC of a blocked thread. */ /* Return saved PC of a blocked thread. */
struct task_struct; struct task_struct;
extern unsigned long thread_saved_pc(struct task_struct *); unsigned long thread_saved_pc(struct task_struct *);
/* On Uniprocessor, even in RMO processes see TSO semantics */ /* On Uniprocessor, even in RMO processes see TSO semantics */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -194,7 +194,7 @@ do { \ ...@@ -194,7 +194,7 @@ do { \
/* Free all resources held by a thread. */ /* Free all resources held by a thread. */
#define release_thread(tsk) do { } while (0) #define release_thread(tsk) do { } while (0)
extern unsigned long get_wchan(struct task_struct *task); unsigned long get_wchan(struct task_struct *task);
#define task_pt_regs(tsk) (task_thread_info(tsk)->kregs) #define task_pt_regs(tsk) (task_thread_info(tsk)->kregs)
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc) #define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc)
...@@ -253,6 +253,8 @@ static inline void prefetchw(const void *x) ...@@ -253,6 +253,8 @@ static inline void prefetchw(const void *x)
#define HAVE_ARCH_PICK_MMAP_LAYOUT #define HAVE_ARCH_PICK_MMAP_LAYOUT
int do_mathemu(struct pt_regs *regs, struct fpustate *f, bool illegal_insn_trap);
#endif /* !(__ASSEMBLY__) */ #endif /* !(__ASSEMBLY__) */
#endif /* !(__ASM_SPARC64_PROCESSOR_H) */ #endif /* !(__ASM_SPARC64_PROCESSOR_H) */
...@@ -36,28 +36,28 @@ struct of_irq_controller { ...@@ -36,28 +36,28 @@ struct of_irq_controller {
void *data; void *data;
}; };
extern struct device_node *of_find_node_by_cpuid(int cpuid); struct device_node *of_find_node_by_cpuid(int cpuid);
extern int of_set_property(struct device_node *node, const char *name, void *val, int len); int of_set_property(struct device_node *node, const char *name, void *val, int len);
extern struct mutex of_set_property_mutex; extern struct mutex of_set_property_mutex;
extern int of_getintprop_default(struct device_node *np, int of_getintprop_default(struct device_node *np,
const char *name, const char *name,
int def); int def);
extern int of_find_in_proplist(const char *list, const char *match, int len); int of_find_in_proplist(const char *list, const char *match, int len);
extern void prom_build_devicetree(void); void prom_build_devicetree(void);
extern void of_populate_present_mask(void); void of_populate_present_mask(void);
extern void of_fill_in_cpu_data(void); void of_fill_in_cpu_data(void);
struct resource; struct resource;
extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name);
extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size); void of_iounmap(struct resource *res, void __iomem *base, unsigned long size);
extern struct device_node *of_console_device; extern struct device_node *of_console_device;
extern char *of_console_path; extern char *of_console_path;
extern char *of_console_options; extern char *of_console_options;
extern void irq_trans_init(struct device_node *dp); void irq_trans_init(struct device_node *dp);
extern char *build_path_component(struct device_node *dp); char *build_path_component(struct device_node *dp);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _SPARC_PROM_H */ #endif /* _SPARC_PROM_H */
...@@ -73,7 +73,7 @@ static inline long regs_return_value(struct pt_regs *regs) ...@@ -73,7 +73,7 @@ static inline long regs_return_value(struct pt_regs *regs)
return regs->u_regs[UREG_I0]; return regs->u_regs[UREG_I0];
} }
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern unsigned long profile_pc(struct pt_regs *); unsigned long profile_pc(struct pt_regs *);
#else #else
#define profile_pc(regs) instruction_pointer(regs) #define profile_pc(regs) instruction_pointer(regs)
#endif #endif
......
...@@ -47,7 +47,19 @@ unsigned long safe_compute_effective_address(struct pt_regs *, unsigned int); ...@@ -47,7 +47,19 @@ unsigned long safe_compute_effective_address(struct pt_regs *, unsigned int);
#endif #endif
extern void sun_do_break(void); #ifdef CONFIG_SPARC64
/* unaligned_64.c */
int handle_ldf_stq(u32 insn, struct pt_regs *regs);
void handle_ld_nf(u32 insn, struct pt_regs *regs);
/* init_64.c */
extern atomic_t dcpage_flushes;
extern atomic_t dcpage_flushes_xcall;
extern int sysctl_tsb_ratio;
#endif
void sun_do_break(void);
extern int stop_a_enabled; extern int stop_a_enabled;
extern int scons_pwroff; extern int scons_pwroff;
......
...@@ -79,9 +79,9 @@ ...@@ -79,9 +79,9 @@
__asm__ ("addcc %r7,%8,%2\n\t" \ __asm__ ("addcc %r7,%8,%2\n\t" \
"addxcc %r5,%6,%1\n\t" \ "addxcc %r5,%6,%1\n\t" \
"addx %r3,%4,%0\n" \ "addx %r3,%4,%0\n" \
: "=r" ((USItype)(r2)), \ : "=r" (r2), \
"=&r" ((USItype)(r1)), \ "=&r" (r1), \
"=&r" ((USItype)(r0)) \ "=&r" (r0) \
: "%rJ" ((USItype)(x2)), \ : "%rJ" ((USItype)(x2)), \
"rI" ((USItype)(y2)), \ "rI" ((USItype)(y2)), \
"%rJ" ((USItype)(x1)), \ "%rJ" ((USItype)(x1)), \
...@@ -94,9 +94,9 @@ ...@@ -94,9 +94,9 @@
__asm__ ("subcc %r7,%8,%2\n\t" \ __asm__ ("subcc %r7,%8,%2\n\t" \
"subxcc %r5,%6,%1\n\t" \ "subxcc %r5,%6,%1\n\t" \
"subx %r3,%4,%0\n" \ "subx %r3,%4,%0\n" \
: "=r" ((USItype)(r2)), \ : "=r" (r2), \
"=&r" ((USItype)(r1)), \ "=&r" (r1), \
"=&r" ((USItype)(r0)) \ "=&r" (r0) \
: "%rJ" ((USItype)(x2)), \ : "%rJ" ((USItype)(x2)), \
"rI" ((USItype)(y2)), \ "rI" ((USItype)(y2)), \
"%rJ" ((USItype)(x1)), \ "%rJ" ((USItype)(x1)), \
...@@ -115,8 +115,8 @@ ...@@ -115,8 +115,8 @@
"addxcc %r6,%7,%0\n\t" \ "addxcc %r6,%7,%0\n\t" \
"addxcc %r4,%5,%%g2\n\t" \ "addxcc %r4,%5,%%g2\n\t" \
"addx %r2,%3,%%g1\n\t" \ "addx %r2,%3,%%g1\n\t" \
: "=&r" ((USItype)(r1)), \ : "=&r" (r1), \
"=&r" ((USItype)(r0)) \ "=&r" (r0) \
: "%rJ" ((USItype)(x3)), \ : "%rJ" ((USItype)(x3)), \
"rI" ((USItype)(y3)), \ "rI" ((USItype)(y3)), \
"%rJ" ((USItype)(x2)), \ "%rJ" ((USItype)(x2)), \
...@@ -140,8 +140,8 @@ ...@@ -140,8 +140,8 @@
"subxcc %r6,%7,%0\n\t" \ "subxcc %r6,%7,%0\n\t" \
"subxcc %r4,%5,%%g2\n\t" \ "subxcc %r4,%5,%%g2\n\t" \
"subx %r2,%3,%%g1\n\t" \ "subx %r2,%3,%%g1\n\t" \
: "=&r" ((USItype)(r1)), \ : "=&r" (r1), \
"=&r" ((USItype)(r0)) \ "=&r" (r0) \
: "%rJ" ((USItype)(x3)), \ : "%rJ" ((USItype)(x3)), \
"rI" ((USItype)(y3)), \ "rI" ((USItype)(y3)), \
"%rJ" ((USItype)(x2)), \ "%rJ" ((USItype)(x2)), \
...@@ -164,10 +164,10 @@ ...@@ -164,10 +164,10 @@
"addxcc %2,%%g0,%2\n\t" \ "addxcc %2,%%g0,%2\n\t" \
"addxcc %1,%%g0,%1\n\t" \ "addxcc %1,%%g0,%1\n\t" \
"addx %0,%%g0,%0\n\t" \ "addx %0,%%g0,%0\n\t" \
: "=&r" ((USItype)(x3)), \ : "=&r" (x3), \
"=&r" ((USItype)(x2)), \ "=&r" (x2), \
"=&r" ((USItype)(x1)), \ "=&r" (x1), \
"=&r" ((USItype)(x0)) \ "=&r" (x0) \
: "rI" ((USItype)(i)), \ : "rI" ((USItype)(i)), \
"0" ((USItype)(x3)), \ "0" ((USItype)(x3)), \
"1" ((USItype)(x2)), \ "1" ((USItype)(x2)), \
......
...@@ -93,15 +93,15 @@ static inline void xc4(smpfunc_t func, unsigned long arg1, unsigned long arg2, ...@@ -93,15 +93,15 @@ static inline void xc4(smpfunc_t func, unsigned long arg1, unsigned long arg2,
arg1, arg2, arg3, arg4); arg1, arg2, arg3, arg4);
} }
extern void arch_send_call_function_single_ipi(int cpu); void arch_send_call_function_single_ipi(int cpu);
extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); void arch_send_call_function_ipi_mask(const struct cpumask *mask);
static inline int cpu_logical_map(int cpu) static inline int cpu_logical_map(int cpu)
{ {
return cpu; return cpu;
} }
extern int hard_smp_processor_id(void); int hard_smp_processor_id(void);
#define raw_smp_processor_id() (current_thread_info()->cpu) #define raw_smp_processor_id() (current_thread_info()->cpu)
......
...@@ -33,29 +33,35 @@ ...@@ -33,29 +33,35 @@
DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); DECLARE_PER_CPU(cpumask_t, cpu_sibling_map);
extern cpumask_t cpu_core_map[NR_CPUS]; extern cpumask_t cpu_core_map[NR_CPUS];
extern void arch_send_call_function_single_ipi(int cpu); void arch_send_call_function_single_ipi(int cpu);
extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); void arch_send_call_function_ipi_mask(const struct cpumask *mask);
/* /*
* General functions that each host system must provide. * General functions that each host system must provide.
*/ */
extern int hard_smp_processor_id(void); int hard_smp_processor_id(void);
#define raw_smp_processor_id() (current_thread_info()->cpu) #define raw_smp_processor_id() (current_thread_info()->cpu)
extern void smp_fill_in_sib_core_maps(void); void smp_fill_in_sib_core_maps(void);
extern void cpu_play_dead(void); void cpu_play_dead(void);
extern void smp_fetch_global_regs(void); void smp_fetch_global_regs(void);
extern void smp_fetch_global_pmu(void); void smp_fetch_global_pmu(void);
struct seq_file; struct seq_file;
void smp_bogo(struct seq_file *); void smp_bogo(struct seq_file *);
void smp_info(struct seq_file *); void smp_info(struct seq_file *);
void smp_callin(void);
void cpu_panic(void);
void smp_synchronize_tick_client(void);
void smp_capture(void);
void smp_release(void);
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
extern int __cpu_disable(void); int __cpu_disable(void);
extern void __cpu_die(unsigned int cpu); void __cpu_die(unsigned int cpu);
#endif #endif
#endif /* !(__ASSEMBLY__) */ #endif /* !(__ASSEMBLY__) */
......
...@@ -62,7 +62,7 @@ extern enum ultra_tlb_layout tlb_type; ...@@ -62,7 +62,7 @@ extern enum ultra_tlb_layout tlb_type;
extern int sun4v_chip_type; extern int sun4v_chip_type;
extern int cheetah_pcache_forced_on; extern int cheetah_pcache_forced_on;
extern void cheetah_enable_pcache(void); void cheetah_enable_pcache(void);
#define sparc64_highest_locked_tlbent() \ #define sparc64_highest_locked_tlbent() \
(tlb_type == spitfire ? \ (tlb_type == spitfire ? \
......
#ifndef _SPARC64_STACKTRACE_H #ifndef _SPARC64_STACKTRACE_H
#define _SPARC64_STACKTRACE_H #define _SPARC64_STACKTRACE_H
extern void stack_trace_flush(void); void stack_trace_flush(void);
#endif /* _SPARC64_STACKTRACE_H */ #endif /* _SPARC64_STACKTRACE_H */
...@@ -11,10 +11,10 @@ ...@@ -11,10 +11,10 @@
extern int this_is_starfire; extern int this_is_starfire;
extern void check_if_starfire(void); void check_if_starfire(void);
extern int starfire_hard_smp_processor_id(void); int starfire_hard_smp_processor_id(void);
extern void starfire_hookup(int); void starfire_hookup(int);
extern unsigned int starfire_translate(unsigned long imap, unsigned int upaid); unsigned int starfire_translate(unsigned long imap, unsigned int upaid);
#endif #endif
#endif #endif
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#ifdef __KERNEL__ #ifdef __KERNEL__
extern void __memmove(void *,const void *,__kernel_size_t); void __memmove(void *,const void *,__kernel_size_t);
#ifndef EXPORT_SYMTAB_STROPS #ifndef EXPORT_SYMTAB_STROPS
...@@ -40,8 +40,8 @@ extern void __memmove(void *,const void *,__kernel_size_t); ...@@ -40,8 +40,8 @@ extern void __memmove(void *,const void *,__kernel_size_t);
#undef memscan #undef memscan
#define memscan(__arg0, __char, __arg2) \ #define memscan(__arg0, __char, __arg2) \
({ \ ({ \
extern void *__memscan_zero(void *, size_t); \ void *__memscan_zero(void *, size_t); \
extern void *__memscan_generic(void *, int, size_t); \ void *__memscan_generic(void *, int, size_t); \
void *__retval, *__addr = (__arg0); \ void *__retval, *__addr = (__arg0); \
size_t __size = (__arg2); \ size_t __size = (__arg2); \
\ \
...@@ -54,14 +54,14 @@ extern void __memmove(void *,const void *,__kernel_size_t); ...@@ -54,14 +54,14 @@ extern void __memmove(void *,const void *,__kernel_size_t);
}) })
#define __HAVE_ARCH_MEMCMP #define __HAVE_ARCH_MEMCMP
extern int memcmp(const void *,const void *,__kernel_size_t); int memcmp(const void *,const void *,__kernel_size_t);
/* Now the str*() stuff... */ /* Now the str*() stuff... */
#define __HAVE_ARCH_STRLEN #define __HAVE_ARCH_STRLEN
extern __kernel_size_t strlen(const char *); __kernel_size_t strlen(const char *);
#define __HAVE_ARCH_STRNCMP #define __HAVE_ARCH_STRNCMP
extern int strncmp(const char *, const char *, __kernel_size_t); int strncmp(const char *, const char *, __kernel_size_t);
#endif /* !EXPORT_SYMTAB_STROPS */ #endif /* !EXPORT_SYMTAB_STROPS */
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
/* First the mem*() things. */ /* First the mem*() things. */
#define __HAVE_ARCH_MEMMOVE #define __HAVE_ARCH_MEMMOVE
extern void *memmove(void *, const void *, __kernel_size_t); void *memmove(void *, const void *, __kernel_size_t);
#define __HAVE_ARCH_MEMCPY #define __HAVE_ARCH_MEMCPY
#define memcpy(t, f, n) __builtin_memcpy(t, f, n) #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
...@@ -32,8 +32,8 @@ extern void *memmove(void *, const void *, __kernel_size_t); ...@@ -32,8 +32,8 @@ extern void *memmove(void *, const void *, __kernel_size_t);
#undef memscan #undef memscan
#define memscan(__arg0, __char, __arg2) \ #define memscan(__arg0, __char, __arg2) \
({ \ ({ \
extern void *__memscan_zero(void *, size_t); \ void *__memscan_zero(void *, size_t); \
extern void *__memscan_generic(void *, int, size_t); \ void *__memscan_generic(void *, int, size_t); \
void *__retval, *__addr = (__arg0); \ void *__retval, *__addr = (__arg0); \
size_t __size = (__arg2); \ size_t __size = (__arg2); \
\ \
...@@ -46,14 +46,14 @@ extern void *memmove(void *, const void *, __kernel_size_t); ...@@ -46,14 +46,14 @@ extern void *memmove(void *, const void *, __kernel_size_t);
}) })
#define __HAVE_ARCH_MEMCMP #define __HAVE_ARCH_MEMCMP
extern int memcmp(const void *,const void *,__kernel_size_t); int memcmp(const void *,const void *,__kernel_size_t);
/* Now the str*() stuff... */ /* Now the str*() stuff... */
#define __HAVE_ARCH_STRLEN #define __HAVE_ARCH_STRLEN
extern __kernel_size_t strlen(const char *); __kernel_size_t strlen(const char *);
#define __HAVE_ARCH_STRNCMP #define __HAVE_ARCH_STRNCMP
extern int strncmp(const char *, const char *, __kernel_size_t); int strncmp(const char *, const char *, __kernel_size_t);
#endif /* !EXPORT_SYMTAB_STROPS */ #endif /* !EXPORT_SYMTAB_STROPS */
......
...@@ -99,8 +99,8 @@ extern struct thread_info *current_set[NR_CPUS]; ...@@ -99,8 +99,8 @@ extern struct thread_info *current_set[NR_CPUS];
"o0", "o1", "o2", "o3", "o7"); \ "o0", "o1", "o2", "o3", "o7"); \
} while(0) } while(0)
extern void fpsave(unsigned long *fpregs, unsigned long *fsr, void fpsave(unsigned long *fpregs, unsigned long *fsr,
void *fpqueue, unsigned long *fpqdepth); void *fpqueue, unsigned long *fpqdepth);
extern void synchronize_user_stack(void); void synchronize_user_stack(void);
#endif /* __SPARC_SWITCH_TO_H */ #endif /* __SPARC_SWITCH_TO_H */
...@@ -65,7 +65,7 @@ do { save_and_clear_fpu(); \ ...@@ -65,7 +65,7 @@ do { save_and_clear_fpu(); \
"o0", "o1", "o2", "o3", "o4", "o5", "o7"); \ "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \
} while(0) } while(0)
extern void synchronize_user_stack(void); void synchronize_user_stack(void);
extern void fault_in_user_windows(void); void fault_in_user_windows(void);
#endif /* __SPARC64_SWITCH_TO_64_H */ #endif /* __SPARC64_SWITCH_TO_64_H */
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
struct pt_regs; struct pt_regs;
extern asmlinkage long sparc_do_fork(unsigned long clone_flags, asmlinkage long sparc_do_fork(unsigned long clone_flags,
unsigned long stack_start, unsigned long stack_start,
struct pt_regs *regs, struct pt_regs *regs,
unsigned long stack_size); unsigned long stack_size);
#endif /* _SPARC64_SYSCALLS_H */ #endif /* _SPARC64_SYSCALLS_H */
...@@ -32,13 +32,13 @@ static inline unsigned int timer_value(unsigned int value) ...@@ -32,13 +32,13 @@ static inline unsigned int timer_value(unsigned int value)
return (value + 1) << TIMER_VALUE_SHIFT; return (value + 1) << TIMER_VALUE_SHIFT;
} }
extern volatile unsigned int __iomem *master_l10_counter; extern volatile u32 __iomem *master_l10_counter;
extern irqreturn_t notrace timer_interrupt(int dummy, void *dev_id); irqreturn_t notrace timer_interrupt(int dummy, void *dev_id);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
DECLARE_PER_CPU(struct clock_event_device, sparc32_clockevent); DECLARE_PER_CPU(struct clock_event_device, sparc32_clockevent);
extern void register_percpu_ce(int cpu); void register_percpu_ce(int cpu);
#endif #endif
#endif /* !(_SPARC_TIMER_H) */ #endif /* !(_SPARC_TIMER_H) */
...@@ -23,8 +23,8 @@ struct sparc64_tick_ops { ...@@ -23,8 +23,8 @@ struct sparc64_tick_ops {
extern struct sparc64_tick_ops *tick_ops; extern struct sparc64_tick_ops *tick_ops;
extern unsigned long sparc64_get_clock_tick(unsigned int cpu); unsigned long sparc64_get_clock_tick(unsigned int cpu);
extern void setup_sparc64_timer(void); void setup_sparc64_timer(void);
extern void __init time_init(void); void __init time_init(void);
#endif /* _SPARC64_TIMER_H */ #endif /* _SPARC64_TIMER_H */
...@@ -8,19 +8,19 @@ ...@@ -8,19 +8,19 @@
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_flush_tlb_pending(struct mm_struct *, void smp_flush_tlb_pending(struct mm_struct *,
unsigned long, unsigned long *); unsigned long, unsigned long *);
#endif #endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_flush_tlb_mm(struct mm_struct *mm); void smp_flush_tlb_mm(struct mm_struct *mm);
#define do_flush_tlb_mm(mm) smp_flush_tlb_mm(mm) #define do_flush_tlb_mm(mm) smp_flush_tlb_mm(mm)
#else #else
#define do_flush_tlb_mm(mm) __flush_tlb_mm(CTX_HWBITS(mm->context), SECONDARY_CONTEXT) #define do_flush_tlb_mm(mm) __flush_tlb_mm(CTX_HWBITS(mm->context), SECONDARY_CONTEXT)
#endif #endif
extern void __flush_tlb_pending(unsigned long, unsigned long, unsigned long *); void __flush_tlb_pending(unsigned long, unsigned long, unsigned long *);
extern void flush_tlb_pending(void); void flush_tlb_pending(void);
#define tlb_start_vma(tlb, vma) do { } while (0) #define tlb_start_vma(tlb, vma) do { } while (0)
#define tlb_end_vma(tlb, vma) do { } while (0) #define tlb_end_vma(tlb, vma) do { } while (0)
......
...@@ -14,9 +14,9 @@ struct tlb_batch { ...@@ -14,9 +14,9 @@ struct tlb_batch {
unsigned long vaddrs[TLB_BATCH_NR]; unsigned long vaddrs[TLB_BATCH_NR];
}; };
extern void flush_tsb_kernel_range(unsigned long start, unsigned long end); void flush_tsb_kernel_range(unsigned long start, unsigned long end);
extern void flush_tsb_user(struct tlb_batch *tb); void flush_tsb_user(struct tlb_batch *tb);
extern void flush_tsb_user_page(struct mm_struct *mm, unsigned long vaddr); void flush_tsb_user_page(struct mm_struct *mm, unsigned long vaddr);
/* TLB flush operations. */ /* TLB flush operations. */
...@@ -36,15 +36,15 @@ static inline void flush_tlb_range(struct vm_area_struct *vma, ...@@ -36,15 +36,15 @@ static inline void flush_tlb_range(struct vm_area_struct *vma,
#define __HAVE_ARCH_ENTER_LAZY_MMU_MODE #define __HAVE_ARCH_ENTER_LAZY_MMU_MODE
extern void flush_tlb_pending(void); void flush_tlb_pending(void);
extern void arch_enter_lazy_mmu_mode(void); void arch_enter_lazy_mmu_mode(void);
extern void arch_leave_lazy_mmu_mode(void); void arch_leave_lazy_mmu_mode(void);
#define arch_flush_lazy_mmu_mode() do {} while (0) #define arch_flush_lazy_mmu_mode() do {} while (0)
/* Local cpu only. */ /* Local cpu only. */
extern void __flush_tlb_all(void); void __flush_tlb_all(void);
extern void __flush_tlb_page(unsigned long context, unsigned long vaddr); void __flush_tlb_page(unsigned long context, unsigned long vaddr);
extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end); void __flush_tlb_kernel_range(unsigned long start, unsigned long end);
#ifndef CONFIG_SMP #ifndef CONFIG_SMP
...@@ -60,8 +60,8 @@ static inline void global_flush_tlb_page(struct mm_struct *mm, unsigned long vad ...@@ -60,8 +60,8 @@ static inline void global_flush_tlb_page(struct mm_struct *mm, unsigned long vad
#else /* CONFIG_SMP */ #else /* CONFIG_SMP */
extern void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end); void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end);
extern void smp_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr); void smp_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr);
#define flush_tlb_kernel_range(start, end) \ #define flush_tlb_kernel_range(start, end) \
do { flush_tsb_kernel_range(start,end); \ do { flush_tsb_kernel_range(start,end); \
......
...@@ -18,7 +18,7 @@ static inline int cpu_to_node(int cpu) ...@@ -18,7 +18,7 @@ static inline int cpu_to_node(int cpu)
struct pci_bus; struct pci_bus;
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
extern int pcibus_to_node(struct pci_bus *pbus); int pcibus_to_node(struct pci_bus *pbus);
#else #else
static inline int pcibus_to_node(struct pci_bus *pbus) static inline int pcibus_to_node(struct pci_bus *pbus)
{ {
......
...@@ -51,11 +51,11 @@ struct trap_per_cpu { ...@@ -51,11 +51,11 @@ struct trap_per_cpu {
unsigned long __per_cpu_base; unsigned long __per_cpu_base;
} __attribute__((aligned(64))); } __attribute__((aligned(64)));
extern struct trap_per_cpu trap_block[NR_CPUS]; extern struct trap_per_cpu trap_block[NR_CPUS];
extern void init_cur_cpu_trap(struct thread_info *); void init_cur_cpu_trap(struct thread_info *);
extern void setup_tba(void); void setup_tba(void);
extern int ncpus_probed; extern int ncpus_probed;
extern unsigned long real_hard_smp_processor_id(void); unsigned long real_hard_smp_processor_id(void);
struct cpuid_patch_entry { struct cpuid_patch_entry {
unsigned int addr; unsigned int addr;
......
...@@ -9,6 +9,6 @@ ...@@ -9,6 +9,6 @@
#define user_addr_max() \ #define user_addr_max() \
(segment_eq(get_fs(), USER_DS) ? TASK_SIZE : ~0UL) (segment_eq(get_fs(), USER_DS) ? TASK_SIZE : ~0UL)
extern long strncpy_from_user(char *dest, const char __user *src, long count); long strncpy_from_user(char *dest, const char __user *src, long count);
#endif #endif
...@@ -78,9 +78,9 @@ struct exception_table_entry ...@@ -78,9 +78,9 @@ struct exception_table_entry
}; };
/* Returns 0 if exception not found and fixup otherwise. */ /* Returns 0 if exception not found and fixup otherwise. */
extern unsigned long search_extables_range(unsigned long addr, unsigned long *g2); unsigned long search_extables_range(unsigned long addr, unsigned long *g2);
extern void __ret_efault(void); void __ret_efault(void);
/* Uh, these should become the main single-value transfer routines.. /* Uh, these should become the main single-value transfer routines..
* They automatically use the right size if we just have the right * They automatically use the right size if we just have the right
...@@ -152,7 +152,7 @@ __asm__ __volatile__( \ ...@@ -152,7 +152,7 @@ __asm__ __volatile__( \
: "=&r" (ret) : "r" (x), "m" (*__m(addr)), \ : "=&r" (ret) : "r" (x), "m" (*__m(addr)), \
"i" (-EFAULT)) "i" (-EFAULT))
extern int __put_user_bad(void); int __put_user_bad(void);
#define __get_user_check(x,addr,size,type) ({ \ #define __get_user_check(x,addr,size,type) ({ \
register int __gu_ret; \ register int __gu_ret; \
...@@ -244,9 +244,9 @@ __asm__ __volatile__( \ ...@@ -244,9 +244,9 @@ __asm__ __volatile__( \
".previous\n\t" \ ".previous\n\t" \
: "=&r" (x) : "m" (*__m(addr)), "i" (retval)) : "=&r" (x) : "m" (*__m(addr)), "i" (retval))
extern int __get_user_bad(void); int __get_user_bad(void);
extern unsigned long __copy_user(void __user *to, const void __user *from, unsigned long size); unsigned long __copy_user(void __user *to, const void __user *from, unsigned long size);
static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n) static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
{ {
...@@ -306,8 +306,8 @@ static inline unsigned long clear_user(void __user *addr, unsigned long n) ...@@ -306,8 +306,8 @@ static inline unsigned long clear_user(void __user *addr, unsigned long n)
return n; return n;
} }
extern __must_check long strlen_user(const char __user *str); __must_check long strlen_user(const char __user *str);
extern __must_check long strnlen_user(const char __user *str, long n); __must_check long strnlen_user(const char __user *str, long n);
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
...@@ -76,8 +76,8 @@ struct exception_table_entry { ...@@ -76,8 +76,8 @@ struct exception_table_entry {
unsigned int insn, fixup; unsigned int insn, fixup;
}; };
extern void __ret_efault(void); void __ret_efault(void);
extern void __retl_efault(void); void __retl_efault(void);
/* Uh, these should become the main single-value transfer routines.. /* Uh, these should become the main single-value transfer routines..
* They automatically use the right size if we just have the right * They automatically use the right size if we just have the right
...@@ -134,7 +134,7 @@ __asm__ __volatile__( \ ...@@ -134,7 +134,7 @@ __asm__ __volatile__( \
: "=r" (ret) : "r" (x), "r" (__m(addr)), \ : "=r" (ret) : "r" (x), "r" (__m(addr)), \
"i" (-EFAULT)) "i" (-EFAULT))
extern int __put_user_bad(void); int __put_user_bad(void);
#define __get_user_nocheck(data,addr,size,type) ({ \ #define __get_user_nocheck(data,addr,size,type) ({ \
register int __gu_ret; \ register int __gu_ret; \
...@@ -204,13 +204,13 @@ __asm__ __volatile__( \ ...@@ -204,13 +204,13 @@ __asm__ __volatile__( \
".previous\n\t" \ ".previous\n\t" \
: "=r" (x) : "r" (__m(addr)), "i" (retval)) : "=r" (x) : "r" (__m(addr)), "i" (retval))
extern int __get_user_bad(void); int __get_user_bad(void);
extern unsigned long __must_check ___copy_from_user(void *to, unsigned long __must_check ___copy_from_user(void *to,
const void __user *from, const void __user *from,
unsigned long size); unsigned long size);
extern unsigned long copy_from_user_fixup(void *to, const void __user *from, unsigned long copy_from_user_fixup(void *to, const void __user *from,
unsigned long size); unsigned long size);
static inline unsigned long __must_check static inline unsigned long __must_check
copy_from_user(void *to, const void __user *from, unsigned long size) copy_from_user(void *to, const void __user *from, unsigned long size)
{ {
...@@ -223,11 +223,11 @@ copy_from_user(void *to, const void __user *from, unsigned long size) ...@@ -223,11 +223,11 @@ copy_from_user(void *to, const void __user *from, unsigned long size)
} }
#define __copy_from_user copy_from_user #define __copy_from_user copy_from_user
extern unsigned long __must_check ___copy_to_user(void __user *to, unsigned long __must_check ___copy_to_user(void __user *to,
const void *from, const void *from,
unsigned long size); unsigned long size);
extern unsigned long copy_to_user_fixup(void __user *to, const void *from, unsigned long copy_to_user_fixup(void __user *to, const void *from,
unsigned long size); unsigned long size);
static inline unsigned long __must_check static inline unsigned long __must_check
copy_to_user(void __user *to, const void *from, unsigned long size) copy_to_user(void __user *to, const void *from, unsigned long size)
{ {
...@@ -239,11 +239,11 @@ copy_to_user(void __user *to, const void *from, unsigned long size) ...@@ -239,11 +239,11 @@ copy_to_user(void __user *to, const void *from, unsigned long size)
} }
#define __copy_to_user copy_to_user #define __copy_to_user copy_to_user
extern unsigned long __must_check ___copy_in_user(void __user *to, unsigned long __must_check ___copy_in_user(void __user *to,
const void __user *from, const void __user *from,
unsigned long size); unsigned long size);
extern unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned long copy_in_user_fixup(void __user *to, void __user *from,
unsigned long size); unsigned long size);
static inline unsigned long __must_check static inline unsigned long __must_check
copy_in_user(void __user *to, void __user *from, unsigned long size) copy_in_user(void __user *to, void __user *from, unsigned long size)
{ {
...@@ -255,20 +255,20 @@ copy_in_user(void __user *to, void __user *from, unsigned long size) ...@@ -255,20 +255,20 @@ copy_in_user(void __user *to, void __user *from, unsigned long size)
} }
#define __copy_in_user copy_in_user #define __copy_in_user copy_in_user
extern unsigned long __must_check __clear_user(void __user *, unsigned long); unsigned long __must_check __clear_user(void __user *, unsigned long);
#define clear_user __clear_user #define clear_user __clear_user
extern __must_check long strlen_user(const char __user *str); __must_check long strlen_user(const char __user *str);
extern __must_check long strnlen_user(const char __user *str, long n); __must_check long strnlen_user(const char __user *str, long n);
#define __copy_to_user_inatomic __copy_to_user #define __copy_to_user_inatomic __copy_to_user
#define __copy_from_user_inatomic __copy_from_user #define __copy_from_user_inatomic __copy_from_user
struct pt_regs; struct pt_regs;
extern unsigned long compute_effective_address(struct pt_regs *, unsigned long compute_effective_address(struct pt_regs *,
unsigned int insn, unsigned int insn,
unsigned int rd); unsigned int rd);
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
...@@ -372,14 +372,14 @@ do { if (vio->debug & VIO_DEBUG_##TYPE) \ ...@@ -372,14 +372,14 @@ do { if (vio->debug & VIO_DEBUG_##TYPE) \
vio->vdev->channel_id, ## a); \ vio->vdev->channel_id, ## a); \
} while (0) } while (0)
extern int __vio_register_driver(struct vio_driver *drv, struct module *owner, int __vio_register_driver(struct vio_driver *drv, struct module *owner,
const char *mod_name); const char *mod_name);
/* /*
* vio_register_driver must be a macro so that KBUILD_MODNAME can be expanded * vio_register_driver must be a macro so that KBUILD_MODNAME can be expanded
*/ */
#define vio_register_driver(driver) \ #define vio_register_driver(driver) \
__vio_register_driver(driver, THIS_MODULE, KBUILD_MODNAME) __vio_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
extern void vio_unregister_driver(struct vio_driver *drv); void vio_unregister_driver(struct vio_driver *drv);
static inline struct vio_driver *to_vio_driver(struct device_driver *drv) static inline struct vio_driver *to_vio_driver(struct device_driver *drv)
{ {
...@@ -391,21 +391,21 @@ static inline struct vio_dev *to_vio_dev(struct device *dev) ...@@ -391,21 +391,21 @@ static inline struct vio_dev *to_vio_dev(struct device *dev)
return container_of(dev, struct vio_dev, dev); return container_of(dev, struct vio_dev, dev);
} }
extern int vio_ldc_send(struct vio_driver_state *vio, void *data, int len); int vio_ldc_send(struct vio_driver_state *vio, void *data, int len);
extern void vio_link_state_change(struct vio_driver_state *vio, int event); void vio_link_state_change(struct vio_driver_state *vio, int event);
extern void vio_conn_reset(struct vio_driver_state *vio); void vio_conn_reset(struct vio_driver_state *vio);
extern int vio_control_pkt_engine(struct vio_driver_state *vio, void *pkt); int vio_control_pkt_engine(struct vio_driver_state *vio, void *pkt);
extern int vio_validate_sid(struct vio_driver_state *vio, int vio_validate_sid(struct vio_driver_state *vio,
struct vio_msg_tag *tp); struct vio_msg_tag *tp);
extern u32 vio_send_sid(struct vio_driver_state *vio); u32 vio_send_sid(struct vio_driver_state *vio);
extern int vio_ldc_alloc(struct vio_driver_state *vio, int vio_ldc_alloc(struct vio_driver_state *vio,
struct ldc_channel_config *base_cfg, void *event_arg); struct ldc_channel_config *base_cfg, void *event_arg);
extern void vio_ldc_free(struct vio_driver_state *vio); void vio_ldc_free(struct vio_driver_state *vio);
extern int vio_driver_init(struct vio_driver_state *vio, struct vio_dev *vdev, int vio_driver_init(struct vio_driver_state *vio, struct vio_dev *vdev,
u8 dev_class, struct vio_version *ver_table, u8 dev_class, struct vio_version *ver_table,
int ver_table_size, struct vio_driver_ops *ops, int ver_table_size, struct vio_driver_ops *ops,
char *name); char *name);
extern void vio_port_up(struct vio_driver_state *vio); void vio_port_up(struct vio_driver_state *vio);
#endif /* _SPARC64_VIO_H */ #endif /* _SPARC64_VIO_H */
...@@ -57,7 +57,8 @@ static inline void save_and_clear_fpu(void) { ...@@ -57,7 +57,8 @@ static inline void save_and_clear_fpu(void) {
" " : : "i" (FPRS_FEF|FPRS_DU) : " " : : "i" (FPRS_FEF|FPRS_DU) :
"o5", "g1", "g2", "g3", "g7", "cc"); "o5", "g1", "g2", "g3", "g7", "cc");
} }
extern int vis_emul(struct pt_regs *, unsigned int);
int vis_emul(struct pt_regs *, unsigned int);
#endif #endif
#endif /* _SPARC64_ASI_H */ #endif /* _SPARC64_ASI_H */
...@@ -20,13 +20,13 @@ ...@@ -20,13 +20,13 @@
#include <asm/spitfire.h> #include <asm/spitfire.h>
extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *); void xor_vis_2(unsigned long, unsigned long *, unsigned long *);
extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *, void xor_vis_3(unsigned long, unsigned long *, unsigned long *,
unsigned long *); unsigned long *);
extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *, void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *); unsigned long *, unsigned long *);
extern void xor_vis_5(unsigned long, unsigned long *, unsigned long *, void xor_vis_5(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *, unsigned long *); unsigned long *, unsigned long *, unsigned long *);
/* XXX Ugh, write cheetah versions... -DaveM */ /* XXX Ugh, write cheetah versions... -DaveM */
...@@ -38,13 +38,13 @@ static struct xor_block_template xor_block_VIS = { ...@@ -38,13 +38,13 @@ static struct xor_block_template xor_block_VIS = {
.do_5 = xor_vis_5, .do_5 = xor_vis_5,
}; };
extern void xor_niagara_2(unsigned long, unsigned long *, unsigned long *); void xor_niagara_2(unsigned long, unsigned long *, unsigned long *);
extern void xor_niagara_3(unsigned long, unsigned long *, unsigned long *, void xor_niagara_3(unsigned long, unsigned long *, unsigned long *,
unsigned long *); unsigned long *);
extern void xor_niagara_4(unsigned long, unsigned long *, unsigned long *, void xor_niagara_4(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *); unsigned long *, unsigned long *);
extern void xor_niagara_5(unsigned long, unsigned long *, unsigned long *, void xor_niagara_5(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *, unsigned long *); unsigned long *, unsigned long *, unsigned long *);
static struct xor_block_template xor_block_niagara = { static struct xor_block_template xor_block_niagara = {
.name = "Niagara", .name = "Niagara",
......
...@@ -42,7 +42,6 @@ obj-y += time_$(BITS).o ...@@ -42,7 +42,6 @@ obj-y += time_$(BITS).o
obj-$(CONFIG_SPARC32) += windows.o obj-$(CONFIG_SPARC32) += windows.o
obj-y += cpu.o obj-y += cpu.o
obj-$(CONFIG_SPARC32) += devices.o obj-$(CONFIG_SPARC32) += devices.o
obj-$(CONFIG_SPARC32) += tadpole.o
obj-y += ptrace_$(BITS).o obj-y += ptrace_$(BITS).o
obj-y += unaligned_$(BITS).o obj-y += unaligned_$(BITS).o
obj-y += una_asm_$(BITS).o obj-y += una_asm_$(BITS).o
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
#include <linux/audit.h> #include <linux/audit.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include "kernel.h"
static unsigned dir_class[] = { static unsigned dir_class[] = {
#include <asm-generic/audit_dir_write.h> #include <asm-generic/audit_dir_write.h>
~0U ~0U
...@@ -40,7 +42,6 @@ int audit_classify_arch(int arch) ...@@ -40,7 +42,6 @@ int audit_classify_arch(int arch)
int audit_classify_syscall(int abi, unsigned syscall) int audit_classify_syscall(int abi, unsigned syscall)
{ {
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
extern int sparc32_classify_syscall(unsigned);
if (abi == AUDIT_ARCH_SPARC) if (abi == AUDIT_ARCH_SPARC)
return sparc32_classify_syscall(syscall); return sparc32_classify_syscall(syscall);
#endif #endif
...@@ -61,11 +62,6 @@ int audit_classify_syscall(int abi, unsigned syscall) ...@@ -61,11 +62,6 @@ int audit_classify_syscall(int abi, unsigned syscall)
static int __init audit_classes_init(void) static int __init audit_classes_init(void)
{ {
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
extern __u32 sparc32_dir_class[];
extern __u32 sparc32_write_class[];
extern __u32 sparc32_read_class[];
extern __u32 sparc32_chattr_class[];
extern __u32 sparc32_signal_class[];
audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
......
...@@ -106,7 +106,7 @@ EXPORT_SYMBOL(set_auxio); ...@@ -106,7 +106,7 @@ EXPORT_SYMBOL(set_auxio);
/* sun4m power control register (AUXIO2) */ /* sun4m power control register (AUXIO2) */
volatile unsigned char * auxio_power_register = NULL; volatile u8 __iomem *auxio_power_register = NULL;
void __init auxio_power_probe(void) void __init auxio_power_probe(void)
{ {
...@@ -130,8 +130,8 @@ void __init auxio_power_probe(void) ...@@ -130,8 +130,8 @@ void __init auxio_power_probe(void)
r.flags = regs.which_io & 0xF; r.flags = regs.which_io & 0xF;
r.start = regs.phys_addr; r.start = regs.phys_addr;
r.end = regs.phys_addr + regs.reg_size - 1; r.end = regs.phys_addr + regs.reg_size - 1;
auxio_power_register = (unsigned char *) of_ioremap(&r, 0, auxio_power_register =
regs.reg_size, "auxpower"); (u8 __iomem *)of_ioremap(&r, 0, regs.reg_size, "auxpower");
/* Display a quick message on the console. */ /* Display a quick message on the console. */
if (auxio_power_register) if (auxio_power_register)
......
...@@ -137,7 +137,7 @@ static void scrollscreen(void) ...@@ -137,7 +137,7 @@ static void scrollscreen(void)
} }
#endif /* ndef NO_SCROLL */ #endif /* ndef NO_SCROLL */
void btext_drawchar(char c) static void btext_drawchar(char c)
{ {
int cline = 0; int cline = 0;
#ifdef NO_SCROLL #ifdef NO_SCROLL
......
#define __32bit_syscall_numbers__ #define __32bit_syscall_numbers__
#include <asm/unistd.h> #include <asm/unistd.h>
#include "kernel.h"
unsigned sparc32_dir_class[] = { unsigned sparc32_dir_class[] = {
#include <asm-generic/audit_dir_write.h> #include <asm-generic/audit_dir_write.h>
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
#define _CPUMAP_H #define _CPUMAP_H
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void cpu_map_rebuild(void); void cpu_map_rebuild(void);
extern int map_to_cpu(unsigned int index); int map_to_cpu(unsigned int index);
#define cpu_map_init() cpu_map_rebuild() #define cpu_map_init() cpu_map_rebuild()
#else #else
#define cpu_map_init() do {} while (0) #define cpu_map_init() do {} while (0)
......
...@@ -134,5 +134,4 @@ void __init device_scan(void) ...@@ -134,5 +134,4 @@ void __init device_scan(void)
auxio_probe(); auxio_probe();
auxio_power_probe(); auxio_power_probe();
clock_stop_probe();
} }
This diff is collapsed.
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <asm/iommu.h> #include <asm/iommu.h>
#include "iommu_common.h" #include "iommu_common.h"
#include "kernel.h"
#define STC_CTXMATCH_ADDR(STC, CTX) \ #define STC_CTXMATCH_ADDR(STC, CTX) \
((STC)->strbuf_ctxmatch_base + ((CTX) << 3)) ((STC)->strbuf_ctxmatch_base + ((CTX) << 3))
...@@ -840,8 +841,6 @@ static struct dma_map_ops sun4u_dma_ops = { ...@@ -840,8 +841,6 @@ static struct dma_map_ops sun4u_dma_ops = {
struct dma_map_ops *dma_ops = &sun4u_dma_ops; struct dma_map_ops *dma_ops = &sun4u_dma_ops;
EXPORT_SYMBOL(dma_ops); EXPORT_SYMBOL(dma_ops);
extern int pci64_dma_supported(struct pci_dev *pdev, u64 device_mask);
int dma_supported(struct device *dev, u64 device_mask) int dma_supported(struct device *dev, u64 device_mask)
{ {
struct iommu *iommu = dev->archdata.iommu; struct iommu *iommu = dev->archdata.iommu;
......
...@@ -48,12 +48,12 @@ static inline int is_span_boundary(unsigned long entry, ...@@ -48,12 +48,12 @@ static inline int is_span_boundary(unsigned long entry,
return iommu_is_span_boundary(entry, nr, shift, boundary_size); return iommu_is_span_boundary(entry, nr, shift, boundary_size);
} }
extern unsigned long iommu_range_alloc(struct device *dev, unsigned long iommu_range_alloc(struct device *dev,
struct iommu *iommu, struct iommu *iommu,
unsigned long npages, unsigned long npages,
unsigned long *handle); unsigned long *handle);
extern void iommu_range_free(struct iommu *iommu, void iommu_range_free(struct iommu *iommu,
dma_addr_t dma_addr, dma_addr_t dma_addr,
unsigned long npages); unsigned long npages);
#endif /* _IOMMU_COMMON_H */ #endif /* _IOMMU_COMMON_H */
...@@ -96,6 +96,6 @@ void sun4d_handler_irq(unsigned int pil, struct pt_regs *regs); ...@@ -96,6 +96,6 @@ void sun4d_handler_irq(unsigned int pil, struct pt_regs *regs);
/* All SUN4D IPIs are sent on this IRQ, may be shared with hard IRQs */ /* All SUN4D IPIs are sent on this IRQ, may be shared with hard IRQs */
#define SUN4D_IPI_IRQ 13 #define SUN4D_IPI_IRQ 13
extern void sun4d_ipi_interrupt(void); void sun4d_ipi_interrupt(void);
#endif #endif
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#define __SPARC_KERNEL_H #define __SPARC_KERNEL_H
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/ftrace.h>
#include <asm/traps.h> #include <asm/traps.h>
#include <asm/head.h> #include <asm/head.h>
...@@ -15,38 +16,75 @@ extern int ncpus_probed; ...@@ -15,38 +16,75 @@ extern int ncpus_probed;
#ifdef CONFIG_SPARC64 #ifdef CONFIG_SPARC64
/* setup_64.c */ /* setup_64.c */
struct seq_file; struct seq_file;
extern void cpucap_info(struct seq_file *); void cpucap_info(struct seq_file *);
static inline unsigned long kimage_addr_to_ra(const char *p) static inline unsigned long kimage_addr_to_ra(const void *p)
{ {
unsigned long val = (unsigned long) p; unsigned long val = (unsigned long) p;
return kern_base + (val - KERNBASE); return kern_base + (val - KERNBASE);
} }
/* sys_sparc_64.c */
asmlinkage long sys_kern_features(void);
/* unaligned_64.c */
asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn);
int handle_popc(u32 insn, struct pt_regs *regs);
void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr);
void handle_stdfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr);
/* smp_64.c */
void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs);
void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs);
void __irq_entry smp_new_mmu_context_version_client(int irq, struct pt_regs *regs);
void __irq_entry smp_penguin_jailcell(int irq, struct pt_regs *regs);
void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs);
/* kgdb_64.c */
void __irq_entry smp_kgdb_capture_client(int irq, struct pt_regs *regs);
/* pci.c */
int pci64_dma_supported(struct pci_dev *pdev, u64 device_mask);
/* signal32.c */
void do_sigreturn32(struct pt_regs *regs);
asmlinkage void do_rt_sigreturn32(struct pt_regs *regs);
void do_signal32(struct pt_regs * regs);
asmlinkage int do_sys32_sigstack(u32 u_ssptr, u32 u_ossptr, unsigned long sp);
/* compat_audit.c */
extern unsigned sparc32_dir_class[];
extern unsigned sparc32_chattr_class[];
extern unsigned sparc32_write_class[];
extern unsigned sparc32_read_class[];
extern unsigned sparc32_signal_class[];
int sparc32_classify_syscall(unsigned syscall);
#endif #endif
#ifdef CONFIG_SPARC32 #ifdef CONFIG_SPARC32
/* setup_32.c */ /* setup_32.c */
struct linux_romvec;
void sparc32_start_kernel(struct linux_romvec *rp); void sparc32_start_kernel(struct linux_romvec *rp);
/* cpu.c */ /* cpu.c */
extern void cpu_probe(void); void cpu_probe(void);
/* traps_32.c */ /* traps_32.c */
extern void handle_hw_divzero(struct pt_regs *regs, unsigned long pc, void handle_hw_divzero(struct pt_regs *regs, unsigned long pc,
unsigned long npc, unsigned long psr); unsigned long npc, unsigned long psr);
/* irq_32.c */ /* irq_32.c */
extern struct irqaction static_irqaction[]; extern struct irqaction static_irqaction[];
extern int static_irq_count; extern int static_irq_count;
extern spinlock_t irq_action_lock; extern spinlock_t irq_action_lock;
extern void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs); void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs);
extern void init_IRQ(void); void init_IRQ(void);
/* sun4m_irq.c */ /* sun4m_irq.c */
extern void sun4m_init_IRQ(void); void sun4m_init_IRQ(void);
extern void sun4m_unmask_profile_irq(void); void sun4m_unmask_profile_irq(void);
extern void sun4m_clear_profile_irq(int cpu); void sun4m_clear_profile_irq(int cpu);
/* sun4m_smp.c */ /* sun4m_smp.c */
void sun4m_cpu_pre_starting(void *arg); void sun4m_cpu_pre_starting(void *arg);
...@@ -60,14 +98,14 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs); ...@@ -60,14 +98,14 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs);
/* sun4d_irq.c */ /* sun4d_irq.c */
extern spinlock_t sun4d_imsk_lock; extern spinlock_t sun4d_imsk_lock;
extern void sun4d_init_IRQ(void); void sun4d_init_IRQ(void);
extern int sun4d_request_irq(unsigned int irq, int sun4d_request_irq(unsigned int irq,
irq_handler_t handler, irq_handler_t handler,
unsigned long irqflags, unsigned long irqflags,
const char *devname, void *dev_id); const char *devname, void *dev_id);
extern int show_sun4d_interrupts(struct seq_file *, void *); int show_sun4d_interrupts(struct seq_file *, void *);
extern void sun4d_distribute_irqs(void); void sun4d_distribute_irqs(void);
extern void sun4d_free_irq(unsigned int irq, void *dev_id); void sun4d_free_irq(unsigned int irq, void *dev_id);
/* sun4d_smp.c */ /* sun4d_smp.c */
void sun4d_cpu_pre_starting(void *arg); void sun4d_cpu_pre_starting(void *arg);
...@@ -101,7 +139,7 @@ extern unsigned int real_irq_entry[]; ...@@ -101,7 +139,7 @@ extern unsigned int real_irq_entry[];
extern unsigned int smp4d_ticker[]; extern unsigned int smp4d_ticker[];
extern unsigned int patchme_maybe_smp_msg[]; extern unsigned int patchme_maybe_smp_msg[];
extern void floppy_hardint(void); void floppy_hardint(void);
/* trampoline_32.S */ /* trampoline_32.S */
extern unsigned long sun4m_cpu_startup; extern unsigned long sun4m_cpu_startup;
...@@ -132,13 +170,17 @@ asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn); ...@@ -132,13 +170,17 @@ asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn);
/* windows.c */ /* windows.c */
void try_to_clear_window_buffer(struct pt_regs *regs, int who); void try_to_clear_window_buffer(struct pt_regs *regs, int who);
/* tadpole.c */
void __init clock_stop_probe(void);
/* auxio_32.c */ /* auxio_32.c */
void __init auxio_probe(void); void __init auxio_probe(void);
void __init auxio_power_probe(void); void __init auxio_power_probe(void);
/* pcic.c */
extern void __iomem *pcic_regs;
void pcic_nmi(unsigned int pend, struct pt_regs *regs);
/* time_32.c */
void __init time_init(void);
#else /* CONFIG_SPARC32 */ #else /* CONFIG_SPARC32 */
#endif /* CONFIG_SPARC32 */ #endif /* CONFIG_SPARC32 */
#endif /* !(__SPARC_KERNEL_H) */ #endif /* !(__SPARC_KERNEL_H) */
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/irq.h> #include <asm/irq.h>
#include "kernel.h"
void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs)
{ {
struct reg_window *win; struct reg_window *win;
......
...@@ -512,7 +512,8 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri, ...@@ -512,7 +512,8 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
/* /*
* Called when the probe at kretprobe trampoline is hit * Called when the probe at kretprobe trampoline is hit
*/ */
int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs) static int __kprobes trampoline_probe_handler(struct kprobe *p,
struct pt_regs *regs)
{ {
struct kretprobe_instance *ri = NULL; struct kretprobe_instance *ri = NULL;
struct hlist_head *head, empty_rp; struct hlist_head *head, empty_rp;
...@@ -576,7 +577,7 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs) ...@@ -576,7 +577,7 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
return 1; return 1;
} }
void kretprobe_trampoline_holder(void) static void __used kretprobe_trampoline_holder(void)
{ {
asm volatile(".global kretprobe_trampoline\n" asm volatile(".global kretprobe_trampoline\n"
"kretprobe_trampoline:\n" "kretprobe_trampoline:\n"
......
...@@ -32,7 +32,7 @@ struct leon3_gptimer_regs_map *leon3_gptimer_regs; /* timer controller base addr ...@@ -32,7 +32,7 @@ struct leon3_gptimer_regs_map *leon3_gptimer_regs; /* timer controller base addr
int leondebug_irq_disable; int leondebug_irq_disable;
int leon_debug_irqout; int leon_debug_irqout;
static volatile unsigned int dummy_master_l10_counter; static volatile u32 dummy_master_l10_counter;
unsigned long amba_system_id; unsigned long amba_system_id;
static DEFINE_SPINLOCK(leon_irq_lock); static DEFINE_SPINLOCK(leon_irq_lock);
...@@ -313,8 +313,7 @@ void __init leon_init_timers(void) ...@@ -313,8 +313,7 @@ void __init leon_init_timers(void)
leondebug_irq_disable = 0; leondebug_irq_disable = 0;
leon_debug_irqout = 0; leon_debug_irqout = 0;
master_l10_counter = master_l10_counter = (u32 __iomem *)&dummy_master_l10_counter;
(unsigned int __iomem *)&dummy_master_l10_counter;
dummy_master_l10_counter = 0; dummy_master_l10_counter = 0;
rootnp = of_find_node_by_path("/ambapp0"); rootnp = of_find_node_by_path("/ambapp0");
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <asm/apb.h> #include <asm/apb.h>
#include "pci_impl.h" #include "pci_impl.h"
#include "kernel.h"
/* List of all PCI controllers found in the system. */ /* List of all PCI controllers found in the system. */
struct pci_pbm_info *pci_pbm_root = NULL; struct pci_pbm_info *pci_pbm_root = NULL;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment