Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
e7b8d7bd
Commit
e7b8d7bd
authored
Mar 30, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/sparc-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
0cc0f8e0
57cafcc8
Changes
24
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
356 additions
and
233 deletions
+356
-233
arch/sparc/defconfig
arch/sparc/defconfig
+225
-78
arch/sparc/kernel/entry.S
arch/sparc/kernel/entry.S
+7
-20
arch/sparc/kernel/head.S
arch/sparc/kernel/head.S
+0
-3
arch/sparc/kernel/init_task.c
arch/sparc/kernel/init_task.c
+4
-2
arch/sparc/kernel/module.c
arch/sparc/kernel/module.c
+13
-5
arch/sparc/kernel/signal.c
arch/sparc/kernel/signal.c
+2
-2
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+45
-60
arch/sparc/kernel/sys_sunos.c
arch/sparc/kernel/sys_sunos.c
+2
-2
arch/sparc/kernel/traps.c
arch/sparc/kernel/traps.c
+5
-5
arch/sparc/lib/Makefile
arch/sparc/lib/Makefile
+3
-1
arch/sparc/lib/debuglocks.c
arch/sparc/lib/debuglocks.c
+2
-3
arch/sparc/math-emu/math.c
arch/sparc/math-emu/math.c
+2
-0
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+3
-0
drivers/block/carmel.c
drivers/block/carmel.c
+2
-1
drivers/fc4/soc.h
drivers/fc4/soc.h
+7
-3
fs/intermezzo/file.c
fs/intermezzo/file.c
+3
-3
fs/intermezzo/fileset.c
fs/intermezzo/fileset.c
+6
-4
fs/intermezzo/journal.c
fs/intermezzo/journal.c
+2
-2
fs/intermezzo/kml_reint.c
fs/intermezzo/kml_reint.c
+6
-4
fs/intermezzo/psdev.c
fs/intermezzo/psdev.c
+4
-4
fs/intermezzo/upcall.c
fs/intermezzo/upcall.c
+7
-2
include/asm-sparc/asmmacro.h
include/asm-sparc/asmmacro.h
+0
-11
include/asm-sparc/smp.h
include/asm-sparc/smp.h
+4
-4
scripts/modpost.c
scripts/modpost.c
+2
-14
No files found.
arch/sparc/defconfig
View file @
e7b8d7bd
This diff is collapsed.
Click to expand it.
arch/sparc/kernel/entry.S
View file @
e7b8d7bd
...
@@ -288,10 +288,9 @@ bad_trap_handler:
...
@@ -288,10 +288,9 @@ bad_trap_handler:
wr
%
l0
,
PSR_ET
,
%
psr
wr
%
l0
,
PSR_ET
,
%
psr
WRITE_PAUSE
WRITE_PAUSE
mov
%
l7
,
%
o0
!
trap
number
add
%
sp
,
STACKFRAME_SZ
,
%
o0
!
pt_regs
mov
%
l0
,
%
o1
!
psr
call
do_hw_interrupt
call
do_hw_interrupt
mov
%
l
1
,
%
o2
!
pc
mov
%
l
7
,
%
o1
!
trap
number
RESTORE_ALL
RESTORE_ALL
...
@@ -350,21 +349,15 @@ smp4m_ticker:
...
@@ -350,21 +349,15 @@ smp4m_ticker:
*
for
cross
calls
.
That
has
a
separate
entry
point
below
.
*
for
cross
calls
.
That
has
a
separate
entry
point
below
.
*/
*/
maybe_smp4m_msg
:
maybe_smp4m_msg
:
GET_PROCESSOR
_M
ID
(
o3
)
GET_PROCESSOR
4M_
ID
(
o3
)
set
sun4m_interrupts
,
%
l5
set
sun4m_interrupts
,
%
l5
ld
[%
l5
],
%
o5
ld
[%
l5
],
%
o5
sethi
%
hi
(
0x
60000000
),
%
o4
sethi
%
hi
(
0x
40000000
),
%
o2
sll
%
o3
,
12
,
%
o3
sll
%
o3
,
12
,
%
o3
ld
[%
o5
+
%
o3
],
%
o1
ld
[%
o5
+
%
o3
],
%
o1
andcc
%
o1
,
%
o
4
,
%
g0
andcc
%
o1
,
%
o
2
,
%
g0
be
,
a
smp4m_ticker
be
,
a
smp4m_ticker
cmp
%
l7
,
14
cmp
%
l7
,
14
sethi
%
hi
(
0x40000000
),
%
o2
add
%
o5
,
%
o3
,
%
o5
andcc
%
o1
,
%
o2
,
%
g0
be
,
a
1
f
sethi
%
hi
(
0x20000000
),
%
o2
1
:
st
%
o2
,
[%
o5
+
0x4
]
st
%
o2
,
[%
o5
+
0x4
]
WRITE_PAUSE
WRITE_PAUSE
ld
[%
o5
],
%
g0
ld
[%
o5
],
%
g0
...
@@ -374,15 +367,9 @@ maybe_smp4m_msg:
...
@@ -374,15 +367,9 @@ maybe_smp4m_msg:
WRITE_PAUSE
WRITE_PAUSE
wr
%
l4
,
PSR_ET
,
%
psr
wr
%
l4
,
PSR_ET
,
%
psr
WRITE_PAUSE
WRITE_PAUSE
srl
%
o2
,
(
16
+
14
),
%
o2
tst
%
o2
bne
2
f
nop
call
smp_reschedule_irq
call
smp_reschedule_irq
add
%
o7
,
8
,
%
o7
2
:
call
smp_stop_cpu_irq
nop
nop
RESTORE_ALL
RESTORE_ALL
.
align
4
.
align
4
...
@@ -390,7 +377,7 @@ maybe_smp4m_msg:
...
@@ -390,7 +377,7 @@ maybe_smp4m_msg:
linux_trap_ipi15_sun4m
:
linux_trap_ipi15_sun4m
:
SAVE_ALL
SAVE_ALL
sethi
%
hi
(
0x80000000
),
%
o2
sethi
%
hi
(
0x80000000
),
%
o2
GET_PROCESSOR
_M
ID
(
o0
)
GET_PROCESSOR
4M_
ID
(
o0
)
set
sun4m_interrupts
,
%
l5
set
sun4m_interrupts
,
%
l5
ld
[%
l5
],
%
o5
ld
[%
l5
],
%
o5
sll
%
o0
,
12
,
%
o0
sll
%
o0
,
12
,
%
o0
...
...
arch/sparc/kernel/head.S
View file @
e7b8d7bd
...
@@ -746,9 +746,6 @@ go_to_highmem:
...
@@ -746,9 +746,6 @@ go_to_highmem:
jmpl
%
g1
,
%
g0
jmpl
%
g1
,
%
g0
nop
nop
/
*
This
is
to
align
init_thread_union
properly
,
be
careful
.
-
DaveM
*/
.
align
8192
/*
The
code
above
should
be
at
beginning
and
we
have
to
take
care
about
/*
The
code
above
should
be
at
beginning
and
we
have
to
take
care
about
*
short
jumps
,
as
branching
to
.
text
.
init
section
from
.
text
is
usually
*
short
jumps
,
as
branching
to
.
text
.
init
section
from
.
text
is
usually
*
impossible
*/
*
impossible
*/
...
...
arch/sparc/kernel/init_task.c
View file @
e7b8d7bd
...
@@ -21,5 +21,7 @@ EXPORT_SYMBOL(init_task);
...
@@ -21,5 +21,7 @@ EXPORT_SYMBOL(init_task);
* If this is not aligned on a 8k boundry, then you should change code
* If this is not aligned on a 8k boundry, then you should change code
* in etrap.S which assumes it.
* in etrap.S which assumes it.
*/
*/
__asm__
(
".section
\"
.text
\"
,#alloc
\n
"
);
union
thread_union
init_thread_union
union
thread_union
init_thread_union
=
{
INIT_THREAD_INFO
(
init_task
)
};
__attribute__
((
section
(
".text"
)))
__attribute__
((
aligned
(
THREAD_SIZE
)))
=
{
INIT_THREAD_INFO
(
init_task
)
};
arch/sparc/kernel/module.c
View file @
e7b8d7bd
...
@@ -36,7 +36,9 @@ void module_free(struct module *mod, void *module_region)
...
@@ -36,7 +36,9 @@ void module_free(struct module *mod, void *module_region)
table entries. */
table entries. */
}
}
/* Make generic code ignore STT_REGISTER dummy undefined symbols. */
/* Make generic code ignore STT_REGISTER dummy undefined symbols,
* and replace references to .func with func as in ppc64's dedotify.
*/
int
module_frob_arch_sections
(
Elf_Ehdr
*
hdr
,
int
module_frob_arch_sections
(
Elf_Ehdr
*
hdr
,
Elf_Shdr
*
sechdrs
,
Elf_Shdr
*
sechdrs
,
char
*
secstrings
,
char
*
secstrings
,
...
@@ -44,7 +46,7 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
...
@@ -44,7 +46,7 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
{
{
unsigned
int
symidx
;
unsigned
int
symidx
;
Elf32_Sym
*
sym
;
Elf32_Sym
*
sym
;
c
onst
c
har
*
strtab
;
char
*
strtab
;
int
i
;
int
i
;
for
(
symidx
=
0
;
sechdrs
[
symidx
].
sh_type
!=
SHT_SYMTAB
;
symidx
++
)
{
for
(
symidx
=
0
;
sechdrs
[
symidx
].
sh_type
!=
SHT_SYMTAB
;
symidx
++
)
{
...
@@ -57,9 +59,15 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
...
@@ -57,9 +59,15 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
strtab
=
(
char
*
)
sechdrs
[
sechdrs
[
symidx
].
sh_link
].
sh_addr
;
strtab
=
(
char
*
)
sechdrs
[
sechdrs
[
symidx
].
sh_link
].
sh_addr
;
for
(
i
=
1
;
i
<
sechdrs
[
symidx
].
sh_size
/
sizeof
(
Elf_Sym
);
i
++
)
{
for
(
i
=
1
;
i
<
sechdrs
[
symidx
].
sh_size
/
sizeof
(
Elf_Sym
);
i
++
)
{
if
(
sym
[
i
].
st_shndx
==
SHN_UNDEF
&&
if
(
sym
[
i
].
st_shndx
==
SHN_UNDEF
)
{
ELF32_ST_TYPE
(
sym
[
i
].
st_info
)
==
STT_REGISTER
)
if
(
ELF32_ST_TYPE
(
sym
[
i
].
st_info
)
==
STT_REGISTER
)
sym
[
i
].
st_shndx
=
SHN_ABS
;
sym
[
i
].
st_shndx
=
SHN_ABS
;
else
{
char
*
name
=
strtab
+
sym
[
i
].
st_name
;
if
(
name
[
0
]
==
'.'
)
memmove
(
name
,
name
+
1
,
strlen
(
name
));
}
}
}
}
return
0
;
return
0
;
}
}
...
...
arch/sparc/kernel/signal.c
View file @
e7b8d7bd
...
@@ -1128,9 +1128,9 @@ do_sys_sigstack(struct sigstack __user *ssptr, struct sigstack __user *ossptr,
...
@@ -1128,9 +1128,9 @@ do_sys_sigstack(struct sigstack __user *ssptr, struct sigstack __user *ossptr,
/* Now see if we want to update the new state. */
/* Now see if we want to update the new state. */
if
(
ssptr
)
{
if
(
ssptr
)
{
void
*
ss_sp
;
char
*
ss_sp
;
if
(
get_user
(
(
long
)
ss_sp
,
&
ssptr
->
the_stack
))
if
(
get_user
(
ss_sp
,
&
ssptr
->
the_stack
))
goto
out
;
goto
out
;
/* If the current stack was set with sigaltstack, don't
/* If the current stack was set with sigaltstack, don't
swap stacks while we are on it. */
swap stacks while we are on it. */
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
e7b8d7bd
...
@@ -92,31 +92,21 @@ extern void ___set_bit(void);
...
@@ -92,31 +92,21 @@ extern void ___set_bit(void);
extern
void
___clear_bit
(
void
);
extern
void
___clear_bit
(
void
);
extern
void
___change_bit
(
void
);
extern
void
___change_bit
(
void
);
/* One thing to note is that the way the symbols of the mul/div
/* Alias functions whose names begin with "." and export the aliases.
* support routines are named is a mess, they all start with
* The module references will be fixed up by module_frob_arch_sections.
* a '.' which makes it a bitch to export, here is the trick:
*/
*/
#define DOT_ALIAS2(__ret, __x, __arg1, __arg2) \
extern __ret __x(__arg1, __arg2) \
__attribute__((weak, alias("." # __x)));
/* If the interface of any of these special functions does ever
DOT_ALIAS2
(
int
,
div
,
int
,
int
)
* change in an incompatible way, you must modify this.
DOT_ALIAS2
(
int
,
mul
,
int
,
int
)
*/
DOT_ALIAS2
(
int
,
rem
,
int
,
int
)
#define DOT_PROTO(sym) extern int __dot_##sym(int, int)
DOT_ALIAS2
(
unsigned
,
udiv
,
unsigned
,
unsigned
)
DOT_ALIAS2
(
unsigned
,
umul
,
unsigned
,
unsigned
)
#ifdef __GENKSYMS__
DOT_ALIAS2
(
unsigned
,
urem
,
unsigned
,
unsigned
)
#define EXPORT_SYMBOL_DOT(sym) \
DOT_PROTO(sym); \
#undef DOT_ALIAS2
EXPORT_SYMBOL(__dot_ ## sym)
#else
/* !__GENKSYMS__ */
#define EXPORT_SYMBOL_DOT(sym) \
DOT_PROTO(sym) __asm__("." # sym); \
__CRC_SYMBOL(__dot_##sym, "") \
static const char __kstrtab___dot_##sym[] \
__attribute__((section("__ksymtab_strings"))) \
= "." #sym; \
static const struct kernel_symbol __ksymtab___dot_##sym \
__attribute__((section("__ksymtab"))) \
= { (unsigned long)&__dot_##sym, __kstrtab___dot_##sym }
#endif
/* used by various drivers */
/* used by various drivers */
EXPORT_SYMBOL
(
sparc_cpu_model
);
EXPORT_SYMBOL
(
sparc_cpu_model
);
...
@@ -180,21 +170,20 @@ EXPORT_SYMBOL(io_remap_page_range);
...
@@ -180,21 +170,20 @@ EXPORT_SYMBOL(io_remap_page_range);
/* EXPORT_SYMBOL(iounit_map_dma_init); */
/* EXPORT_SYMBOL(iounit_map_dma_init); */
/* EXPORT_SYMBOL(iounit_map_dma_page); */
/* EXPORT_SYMBOL(iounit_map_dma_page); */
/* Btfixup stuff cannot have versions, it would be complicated too much */
#ifndef CONFIG_SMP
#ifndef CONFIG_SMP
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
___xchg32
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
___xchg32
));
#else
#else
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
_
_smp_processor_id
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
__hard
_smp_processor_id
));
#endif
#endif
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
enable_irq
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
enable_irq
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
disable_irq
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
disable_irq
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
__irq_itoa
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
__irq_itoa
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_unlockarea
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_unlockarea
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_lockarea
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_lockarea
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_get_scsi_sgl
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_get_scsi_sgl
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_get_scsi_one
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_get_scsi_one
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_release_scsi_sgl
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_release_scsi_sgl
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_release_scsi_one
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_release_scsi_one
));
#ifdef CONFIG_SBUS
#ifdef CONFIG_SBUS
EXPORT_SYMBOL
(
sbus_root
);
EXPORT_SYMBOL
(
sbus_root
);
...
@@ -271,15 +260,15 @@ EXPORT_SYMBOL(__prom_getsibling);
...
@@ -271,15 +260,15 @@ EXPORT_SYMBOL(__prom_getsibling);
/* sparc library symbols */
/* sparc library symbols */
EXPORT_SYMBOL
(
bcopy
);
EXPORT_SYMBOL
(
bcopy
);
EXPORT_SYMBOL
(
memchr
);
EXPORT_SYMBOL
(
memchr
);
EXPORT_SYMBOL
_NOVERS
(
memscan
);
EXPORT_SYMBOL
(
memscan
);
EXPORT_SYMBOL
_NOVERS
(
strlen
);
EXPORT_SYMBOL
(
strlen
);
EXPORT_SYMBOL
(
strnlen
);
EXPORT_SYMBOL
(
strnlen
);
EXPORT_SYMBOL
(
strcpy
);
EXPORT_SYMBOL
(
strcpy
);
EXPORT_SYMBOL
(
strncpy
);
EXPORT_SYMBOL
(
strncpy
);
EXPORT_SYMBOL
(
strcat
);
EXPORT_SYMBOL
(
strcat
);
EXPORT_SYMBOL
(
strncat
);
EXPORT_SYMBOL
(
strncat
);
EXPORT_SYMBOL
(
strcmp
);
EXPORT_SYMBOL
(
strcmp
);
EXPORT_SYMBOL
_NOVERS
(
strncmp
);
EXPORT_SYMBOL
(
strncmp
);
EXPORT_SYMBOL
(
strchr
);
EXPORT_SYMBOL
(
strchr
);
EXPORT_SYMBOL
(
strrchr
);
EXPORT_SYMBOL
(
strrchr
);
EXPORT_SYMBOL
(
strpbrk
);
EXPORT_SYMBOL
(
strpbrk
);
...
@@ -309,28 +298,24 @@ EXPORT_SYMBOL(csum_partial);
...
@@ -309,28 +298,24 @@ EXPORT_SYMBOL(csum_partial);
/* Cache flushing. */
/* Cache flushing. */
EXPORT_SYMBOL
(
sparc_flush_page_to_ram
);
EXPORT_SYMBOL
(
sparc_flush_page_to_ram
);
/* No version information on this, heavily used in inline asm,
EXPORT_SYMBOL
(
__ret_efault
);
* and will always be 'void __ret_efault(void)'.
*/
EXPORT_SYMBOL
(
memcmp
);
EXPORT_SYMBOL_NOVERS
(
__ret_efault
);
EXPORT_SYMBOL
(
memcpy
);
EXPORT_SYMBOL
(
memset
);
/* No version information on these, as gcc produces such symbols. */
EXPORT_SYMBOL
(
memmove
);
EXPORT_SYMBOL_NOVERS
(
memcmp
);
EXPORT_SYMBOL
(
__ashrdi3
);
EXPORT_SYMBOL_NOVERS
(
memcpy
);
EXPORT_SYMBOL
(
__ashldi3
);
EXPORT_SYMBOL_NOVERS
(
memset
);
EXPORT_SYMBOL
(
__lshrdi3
);
EXPORT_SYMBOL_NOVERS
(
memmove
);
EXPORT_SYMBOL
(
__muldi3
);
EXPORT_SYMBOL_NOVERS
(
__ashrdi3
);
EXPORT_SYMBOL
(
__divdi3
);
EXPORT_SYMBOL_NOVERS
(
__ashldi3
);
EXPORT_SYMBOL_NOVERS
(
__lshrdi3
);
EXPORT_SYMBOL
(
rem
);
EXPORT_SYMBOL_NOVERS
(
__muldi3
);
EXPORT_SYMBOL
(
urem
);
EXPORT_SYMBOL_NOVERS
(
__divdi3
);
EXPORT_SYMBOL
(
mul
);
EXPORT_SYMBOL
(
umul
);
EXPORT_SYMBOL_DOT
(
rem
);
EXPORT_SYMBOL
(
div
);
EXPORT_SYMBOL_DOT
(
urem
);
EXPORT_SYMBOL
(
udiv
);
EXPORT_SYMBOL_DOT
(
mul
);
EXPORT_SYMBOL_DOT
(
umul
);
EXPORT_SYMBOL_DOT
(
div
);
EXPORT_SYMBOL_DOT
(
udiv
);
#ifdef CONFIG_DEBUG_BUGVERBOSE
#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL
(
do_BUG
);
EXPORT_SYMBOL
(
do_BUG
);
...
...
arch/sparc/kernel/sys_sunos.c
View file @
e7b8d7bd
...
@@ -343,7 +343,7 @@ static int sunos_filldir(void * __buf, const char * name, int namlen,
...
@@ -343,7 +343,7 @@ static int sunos_filldir(void * __buf, const char * name, int namlen,
put_user
(
reclen
,
&
dirent
->
d_reclen
);
put_user
(
reclen
,
&
dirent
->
d_reclen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
((
char
*
)
dirent
)
+=
reclen
;
dirent
=
(
void
*
)
dirent
+
reclen
;
buf
->
curr
=
dirent
;
buf
->
curr
=
dirent
;
buf
->
count
-=
reclen
;
buf
->
count
-=
reclen
;
return
0
;
return
0
;
...
@@ -422,7 +422,7 @@ static int sunos_filldirentry(void * __buf, const char * name, int namlen,
...
@@ -422,7 +422,7 @@ static int sunos_filldirentry(void * __buf, const char * name, int namlen,
put_user
(
reclen
,
&
dirent
->
d_reclen
);
put_user
(
reclen
,
&
dirent
->
d_reclen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
((
char
*
)
dirent
)
+=
reclen
;
dirent
=
(
void
*
)
dirent
+
reclen
;
buf
->
curr
=
dirent
;
buf
->
curr
=
dirent
;
buf
->
count
-=
reclen
;
buf
->
count
-=
reclen
;
return
0
;
return
0
;
...
...
arch/sparc/kernel/traps.c
View file @
e7b8d7bd
...
@@ -131,23 +131,23 @@ void die_if_kernel(char *str, struct pt_regs *regs)
...
@@ -131,23 +131,23 @@ void die_if_kernel(char *str, struct pt_regs *regs)
do_exit
(
SIGSEGV
);
do_exit
(
SIGSEGV
);
}
}
void
do_hw_interrupt
(
unsigned
long
type
,
unsigned
long
psr
,
unsigned
long
pc
)
void
do_hw_interrupt
(
struct
pt_regs
*
regs
,
unsigned
long
type
)
{
{
siginfo_t
info
;
siginfo_t
info
;
if
(
type
<
0x80
)
{
if
(
type
<
0x80
)
{
/* Sun OS's puke from bad traps, Linux survives! */
/* Sun OS's puke from bad traps, Linux survives! */
printk
(
"Unimplemented Sparc TRAP, type = %02lx
\n
"
,
type
);
printk
(
"Unimplemented Sparc TRAP, type = %02lx
\n
"
,
type
);
die_if_kernel
(
"Whee... Hello Mr. Penguin"
,
current
->
thread
.
k
regs
);
die_if_kernel
(
"Whee... Hello Mr. Penguin"
,
regs
);
}
}
if
(
psr
&
PSR_PS
)
if
(
regs
->
psr
&
PSR_PS
)
die_if_kernel
(
"Kernel bad trap"
,
current
->
thread
.
k
regs
);
die_if_kernel
(
"Kernel bad trap"
,
regs
);
info
.
si_signo
=
SIGILL
;
info
.
si_signo
=
SIGILL
;
info
.
si_errno
=
0
;
info
.
si_errno
=
0
;
info
.
si_code
=
ILL_ILLTRP
;
info
.
si_code
=
ILL_ILLTRP
;
info
.
si_addr
=
(
void
*
)
pc
;
info
.
si_addr
=
(
void
*
)
regs
->
pc
;
info
.
si_trapno
=
type
-
0x80
;
info
.
si_trapno
=
type
-
0x80
;
force_sig_info
(
SIGILL
,
&
info
,
current
);
force_sig_info
(
SIGILL
,
&
info
,
current
);
}
}
...
...
arch/sparc/lib/Makefile
View file @
e7b8d7bd
...
@@ -7,5 +7,7 @@ EXTRA_AFLAGS := -ansi -DST_DIV0=0x02
...
@@ -7,5 +7,7 @@ EXTRA_AFLAGS := -ansi -DST_DIV0=0x02
lib-y
:=
mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o memcpy.o memset.o
\
lib-y
:=
mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o memcpy.o memset.o
\
strlen.o checksum.o blockops.o memscan.o memcmp.o strncmp.o
\
strlen.o checksum.o blockops.o memscan.o memcmp.o strncmp.o
\
strncpy_from_user.o divdi3.o udivdi3.o strlen_user.o
\
strncpy_from_user.o divdi3.o udivdi3.o strlen_user.o
\
copy_user.o locks.o atomic.o atomic32.o bitops.o
debuglocks.o
\
copy_user.o locks.o atomic.o atomic32.o bitops.o
\
lshrdi3.o ashldi3.o rwsem.o muldi3.o bitext.o
lshrdi3.o ashldi3.o rwsem.o muldi3.o bitext.o
lib-$(CONFIG_DEBUG_SPINLOCK)
+=
debuglocks.o
arch/sparc/lib/debuglocks.c
View file @
e7b8d7bd
...
@@ -12,8 +12,7 @@
...
@@ -12,8 +12,7 @@
#include <asm/psr.h>
#include <asm/psr.h>
#include <asm/system.h>
#include <asm/system.h>
/* To enable this code, just define SPIN_LOCK_DEBUG in asm/spinlock.h */
#ifdef CONFIG_SMP
#ifdef SPIN_LOCK_DEBUG
/* Some notes on how these debugging routines work. When a lock is acquired
/* Some notes on how these debugging routines work. When a lock is acquired
* an extra debugging member lock->owner_pc is set to the caller of the lock
* an extra debugging member lock->owner_pc is set to the caller of the lock
...
@@ -200,4 +199,4 @@ void _do_write_unlock(rwlock_t *rw)
...
@@ -200,4 +199,4 @@ void _do_write_unlock(rwlock_t *rw)
rw
->
lock
=
0
;
rw
->
lock
=
0
;
}
}
#endif
/* S
PIN_LOCK_DEBUG
*/
#endif
/* S
MP
*/
arch/sparc/math-emu/math.c
View file @
e7b8d7bd
...
@@ -327,6 +327,7 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
...
@@ -327,6 +327,7 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
#ifdef DEBUG_MATHEMU
#ifdef DEBUG_MATHEMU
printk
(
"unknown FPop1: %03lx
\n
"
,(
insn
>>
5
)
&
0x1ff
);
printk
(
"unknown FPop1: %03lx
\n
"
,(
insn
>>
5
)
&
0x1ff
);
#endif
#endif
break
;
}
}
}
else
if
((
insn
&
0xc1f80000
)
==
0x81a80000
)
/* FPOP2 */
{
}
else
if
((
insn
&
0xc1f80000
)
==
0x81a80000
)
/* FPOP2 */
{
switch
((
insn
>>
5
)
&
0x1ff
)
{
switch
((
insn
>>
5
)
&
0x1ff
)
{
...
@@ -340,6 +341,7 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
...
@@ -340,6 +341,7 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
#ifdef DEBUG_MATHEMU
#ifdef DEBUG_MATHEMU
printk
(
"unknown FPop2: %03lx
\n
"
,(
insn
>>
5
)
&
0x1ff
);
printk
(
"unknown FPop2: %03lx
\n
"
,(
insn
>>
5
)
&
0x1ff
);
#endif
#endif
break
;
}
}
}
}
...
...
arch/sparc64/kernel/sparc64_ksyms.c
View file @
e7b8d7bd
...
@@ -91,6 +91,7 @@ extern int compat_sys_ioctl(unsigned int fd, unsigned int cmd, u32 arg);
...
@@ -91,6 +91,7 @@ extern int compat_sys_ioctl(unsigned int fd, unsigned int cmd, u32 arg);
extern
int
(
*
handle_mathemu
)(
struct
pt_regs
*
,
struct
fpustate
*
);
extern
int
(
*
handle_mathemu
)(
struct
pt_regs
*
,
struct
fpustate
*
);
extern
long
sparc32_open
(
const
char
*
filename
,
int
flags
,
int
mode
);
extern
long
sparc32_open
(
const
char
*
filename
,
int
flags
,
int
mode
);
extern
int
io_remap_page_range
(
struct
vm_area_struct
*
vma
,
unsigned
long
from
,
unsigned
long
offset
,
unsigned
long
size
,
pgprot_t
prot
,
int
space
);
extern
int
io_remap_page_range
(
struct
vm_area_struct
*
vma
,
unsigned
long
from
,
unsigned
long
offset
,
unsigned
long
size
,
pgprot_t
prot
,
int
space
);
extern
void
(
*
prom_palette
)(
int
);
extern
int
__ashrdi3
(
int
,
int
);
extern
int
__ashrdi3
(
int
,
int
);
...
@@ -388,3 +389,5 @@ EXPORT_SYMBOL(xor_vis_2);
...
@@ -388,3 +389,5 @@ EXPORT_SYMBOL(xor_vis_2);
EXPORT_SYMBOL
(
xor_vis_3
);
EXPORT_SYMBOL
(
xor_vis_3
);
EXPORT_SYMBOL
(
xor_vis_4
);
EXPORT_SYMBOL
(
xor_vis_4
);
EXPORT_SYMBOL
(
xor_vis_5
);
EXPORT_SYMBOL
(
xor_vis_5
);
EXPORT_SYMBOL
(
prom_palette
);
drivers/block/carmel.c
View file @
e7b8d7bd
...
@@ -994,7 +994,8 @@ static void carm_handle_array_info(struct carm_host *host,
...
@@ -994,7 +994,8 @@ static void carm_handle_array_info(struct carm_host *host,
}
}
printk
(
KERN_INFO
DRV_NAME
"(%s): port %u device %Lu sectors
\n
"
,
printk
(
KERN_INFO
DRV_NAME
"(%s): port %u device %Lu sectors
\n
"
,
pci_name
(
host
->
pdev
),
port
->
port_no
,
port
->
capacity
);
pci_name
(
host
->
pdev
),
port
->
port_no
,
(
unsigned
long
long
)
port
->
capacity
);
printk
(
KERN_INFO
DRV_NAME
"(%s): port %u device
\"
%s
\"\n
"
,
printk
(
KERN_INFO
DRV_NAME
"(%s): port %u device
\"
%s
\"\n
"
,
pci_name
(
host
->
pdev
),
port
->
port_no
,
port
->
name
);
pci_name
(
host
->
pdev
),
port
->
port_no
,
port
->
name
);
...
...
drivers/fc4/soc.h
View file @
e7b8d7bd
...
@@ -114,18 +114,22 @@ static inline u8 xram_get_8 (xram_p x)
...
@@ -114,18 +114,22 @@ static inline u8 xram_get_8 (xram_p x)
static
inline
void
xram_copy_from
(
void
*
p
,
xram_p
x
,
int
len
)
static
inline
void
xram_copy_from
(
void
*
p
,
xram_p
x
,
int
len
)
{
{
for
(
len
>>=
2
;
len
>
0
;
len
--
,
x
+=
sizeof
(
u32
))
{
for
(
len
>>=
2
;
len
>
0
;
len
--
,
x
+=
sizeof
(
u32
))
{
u32
val
;
u32
val
,
*
p32
=
p
;
val
=
((
sbus_readw
(
x
+
0x00UL
)
<<
16
)
|
val
=
((
sbus_readw
(
x
+
0x00UL
)
<<
16
)
|
(
sbus_readw
(
x
+
0x02UL
)));
(
sbus_readw
(
x
+
0x02UL
)));
*
((
u32
*
)
p
)
++
=
val
;
*
p32
++
=
val
;
p
=
p32
;
}
}
}
}
static
inline
void
xram_copy_to
(
xram_p
x
,
void
*
p
,
int
len
)
static
inline
void
xram_copy_to
(
xram_p
x
,
void
*
p
,
int
len
)
{
{
for
(
len
>>=
2
;
len
>
0
;
len
--
,
x
+=
sizeof
(
u32
))
{
for
(
len
>>=
2
;
len
>
0
;
len
--
,
x
+=
sizeof
(
u32
))
{
u32
tmp
=
*
((
u32
*
)
p
)
++
;
u32
tmp
,
*
p32
=
p
;
tmp
=
*
p32
++
;
p
=
p32
;
sbus_writew
(
tmp
>>
16
,
x
+
0x00UL
);
sbus_writew
(
tmp
>>
16
,
x
+
0x00UL
);
sbus_writew
(
tmp
,
x
+
0x02UL
);
sbus_writew
(
tmp
,
x
+
0x02UL
);
}
}
...
...
fs/intermezzo/file.c
View file @
e7b8d7bd
...
@@ -82,7 +82,7 @@ static int presto_open_upcall(int minor, struct dentry *de)
...
@@ -82,7 +82,7 @@ static int presto_open_upcall(int minor, struct dentry *de)
info
.
remote_generation
=
dd
->
remote_generation
;
info
.
remote_generation
=
dd
->
remote_generation
;
}
else
}
else
CERROR
(
"get_fileid failed %d, ino: %Lx, fetching by name
\n
"
,
rc
,
CERROR
(
"get_fileid failed %d, ino: %Lx, fetching by name
\n
"
,
rc
,
dd
->
remote_ino
);
(
unsigned
long
long
)
dd
->
remote_ino
);
rc
=
izo_upc_open
(
minor
,
pathlen
,
path
,
fset
->
fset_name
,
&
info
);
rc
=
izo_upc_open
(
minor
,
pathlen
,
path
,
fset
->
fset_name
,
&
info
);
PRESTO_FREE
(
buffer
,
PAGE_SIZE
);
PRESTO_FREE
(
buffer
,
PAGE_SIZE
);
...
@@ -380,7 +380,7 @@ static ssize_t presto_file_write(struct file *file, const char *buf,
...
@@ -380,7 +380,7 @@ static ssize_t presto_file_write(struct file *file, const char *buf,
<<
file
->
f_dentry
->
d_inode
->
i_sb
->
s_blocksize_bits
);
<<
file
->
f_dentry
->
d_inode
->
i_sb
->
s_blocksize_bits
);
error
=
presto_reserve_space
(
fset
->
fset_cache
,
res_size
);
error
=
presto_reserve_space
(
fset
->
fset_cache
,
res_size
);
CDEBUG
(
D_INODE
,
"Reserved %Ld for %
d
\n
"
,
res_size
,
size
);
CDEBUG
(
D_INODE
,
"Reserved %Ld for %
Zd
\n
"
,
res_size
,
size
);
if
(
error
)
{
if
(
error
)
{
EXIT
;
EXIT
;
return
-
ENOSPC
;
return
-
ENOSPC
;
...
@@ -440,7 +440,7 @@ static ssize_t presto_file_write(struct file *file, const char *buf,
...
@@ -440,7 +440,7 @@ static ssize_t presto_file_write(struct file *file, const char *buf,
fops
=
filter_c2cffops
(
cache
->
cache_filter
);
fops
=
filter_c2cffops
(
cache
->
cache_filter
);
res
=
fops
->
write
(
file
,
buf
,
size
,
off
);
res
=
fops
->
write
(
file
,
buf
,
size
,
off
);
if
(
res
!=
size
)
{
if
(
res
!=
size
)
{
CDEBUG
(
D_FILE
,
"file write returns short write: size %
d, res %
d
\n
"
,
size
,
res
);
CDEBUG
(
D_FILE
,
"file write returns short write: size %
Zd, res %Z
d
\n
"
,
size
,
res
);
}
}
if
(
(
res
>
0
)
&&
fdata
)
if
(
(
res
>
0
)
&&
fdata
)
...
...
fs/intermezzo/fileset.c
View file @
e7b8d7bd
...
@@ -647,8 +647,9 @@ int izo_set_fileid(struct file *dir, struct izo_ioctl_data *data)
...
@@ -647,8 +647,9 @@ int izo_set_fileid(struct file *dir, struct izo_ioctl_data *data)
CDEBUG
(
D_FILE
,
"de:%p dd:%p
\n
"
,
dentry
,
dd
);
CDEBUG
(
D_FILE
,
"de:%p dd:%p
\n
"
,
dentry
,
dd
);
if
(
dd
->
remote_ino
!=
0
)
{
if
(
dd
->
remote_ino
!=
0
)
{
CERROR
(
"remote_ino already set? %Lx:%Lx
\n
"
,
dd
->
remote_ino
,
CERROR
(
"remote_ino already set? %Lx:%Lx
\n
"
,
dd
->
remote_generation
);
(
unsigned
long
long
)
dd
->
remote_ino
,
(
unsigned
long
long
)
dd
->
remote_generation
);
rc
=
0
;
rc
=
0
;
EXIT
;
EXIT
;
goto
out_close
;
goto
out_close
;
...
@@ -656,8 +657,9 @@ int izo_set_fileid(struct file *dir, struct izo_ioctl_data *data)
...
@@ -656,8 +657,9 @@ int izo_set_fileid(struct file *dir, struct izo_ioctl_data *data)
CDEBUG
(
D_FILE
,
"setting %p %p, %s to %Lx:%Lx
\n
"
,
dentry
,
dd
,
CDEBUG
(
D_FILE
,
"setting %p %p, %s to %Lx:%Lx
\n
"
,
dentry
,
dd
,
buf
,
data
->
ioc_ino
,
buf
,
data
->
ioc_generation
);
(
unsigned
long
long
)
data
->
ioc_ino
,
(
unsigned
long
long
)
data
->
ioc_generation
);
dd
->
remote_ino
=
data
->
ioc_ino
;
dd
->
remote_ino
=
data
->
ioc_ino
;
dd
->
remote_generation
=
data
->
ioc_generation
;
dd
->
remote_generation
=
data
->
ioc_generation
;
...
...
fs/intermezzo/journal.c
View file @
e7b8d7bd
...
@@ -1470,7 +1470,7 @@ int presto_clear_lml_close(struct presto_file_set *fset, loff_t lml_offset)
...
@@ -1470,7 +1470,7 @@ int presto_clear_lml_close(struct presto_file_set *fset, loff_t lml_offset)
return
0
;
return
0
;
}
}
CDEBUG
(
D_JOURNAL
,
"reading prefix: off %ld, size %d
\n
"
,
CDEBUG
(
D_JOURNAL
,
"reading prefix: off %ld, size %
Z
d
\n
"
,
(
long
)
lml_offset
,
sizeof
(
record
));
(
long
)
lml_offset
,
sizeof
(
record
));
rc
=
presto_fread
(
fset
->
fset_lml
.
fd_file
,
(
char
*
)
&
record
,
rc
=
presto_fread
(
fset
->
fset_lml
.
fd_file
,
(
char
*
)
&
record
,
sizeof
(
record
),
&
offset
);
sizeof
(
record
),
&
offset
);
...
@@ -1621,7 +1621,7 @@ int presto_get_fileid(int minor, struct presto_file_set *fset,
...
@@ -1621,7 +1621,7 @@ int presto_get_fileid(int minor, struct presto_file_set *fset,
/* journal_log_suffix expects journal_log to set this */
/* journal_log_suffix expects journal_log to set this */
suffix
->
recno
=
0
;
suffix
->
recno
=
0
;
CDEBUG
(
D_FILE
,
"actual kml size: %d
\n
"
,
logrecord
-
record
);
CDEBUG
(
D_FILE
,
"actual kml size: %
Z
d
\n
"
,
logrecord
-
record
);
CDEBUG
(
D_FILE
,
"get fileid: uid %d, gid %d, path: %s
\n
"
,
uid
,
gid
,
path
);
CDEBUG
(
D_FILE
,
"get fileid: uid %d, gid %d, path: %s
\n
"
,
uid
,
gid
,
path
);
error
=
izo_upc_get_fileid
(
minor
,
size
,
record
,
error
=
izo_upc_get_fileid
(
minor
,
size
,
record
,
...
...
fs/intermezzo/kml_reint.c
View file @
e7b8d7bd
...
@@ -162,7 +162,8 @@ static int reint_close(struct kml_rec *rec, struct file *file,
...
@@ -162,7 +162,8 @@ static int reint_close(struct kml_rec *rec, struct file *file,
*/
*/
if
(
error
==
ENOENT
)
{
if
(
error
==
ENOENT
)
{
CDEBUG
(
D_KML
,
"manually updating remote offset uuid %s"
CDEBUG
(
D_KML
,
"manually updating remote offset uuid %s"
"recno %d offset %Lu
\n
"
,
info
.
uuid
,
info
.
recno
,
info
.
kml_offset
);
"recno %d offset %Lu
\n
"
,
info
.
uuid
,
info
.
recno
,
(
unsigned
long
long
)
info
.
kml_offset
);
error
=
izo_rcvd_upd_remote
(
fset
,
info
.
uuid
,
info
.
recno
,
info
.
kml_offset
);
error
=
izo_rcvd_upd_remote
(
fset
,
info
.
uuid
,
info
.
recno
,
info
.
kml_offset
);
if
(
error
)
if
(
error
)
CERROR
(
"izo_rcvd_upd_remote error %d
\n
"
,
error
);
CERROR
(
"izo_rcvd_upd_remote error %d
\n
"
,
error
);
...
@@ -528,7 +529,7 @@ int kml_reint_rec(struct file *dir, struct izo_ioctl_data *data)
...
@@ -528,7 +529,7 @@ int kml_reint_rec(struct file *dir, struct izo_ioctl_data *data)
if
(
rec
.
suffix
->
recno
!=
lr_rec
.
lr_remote_recno
+
1
)
{
if
(
rec
.
suffix
->
recno
!=
lr_rec
.
lr_remote_recno
+
1
)
{
CERROR
(
"KML record number %Lu expected, not %d
\n
"
,
CERROR
(
"KML record number %Lu expected, not %d
\n
"
,
lr_rec
.
lr_remote_recno
+
1
,
(
unsigned
long
long
)
(
lr_rec
.
lr_remote_recno
+
1
)
,
rec
.
suffix
->
recno
);
rec
.
suffix
->
recno
);
#if 0
#if 0
...
@@ -632,7 +633,8 @@ int izo_get_fileid(struct file *dir, struct izo_ioctl_data *data)
...
@@ -632,7 +633,8 @@ int izo_get_fileid(struct file *dir, struct izo_ioctl_data *data)
filp_close
(
file
,
0
);
filp_close
(
file
,
0
);
CDEBUG
(
D_FILE
,
"%s ino %Lx, gen %Lx
\n
"
,
rec
.
path
,
CDEBUG
(
D_FILE
,
"%s ino %Lx, gen %Lx
\n
"
,
rec
.
path
,
data
->
ioc_ino
,
data
->
ioc_generation
);
(
unsigned
long
long
)
data
->
ioc_ino
,
(
unsigned
long
long
)
data
->
ioc_generation
);
out:
out:
if
(
buf
)
if
(
buf
)
...
...
fs/intermezzo/psdev.c
View file @
e7b8d7bd
...
@@ -227,7 +227,7 @@ static ssize_t presto_psdev_write(struct file *file, const char *buf,
...
@@ -227,7 +227,7 @@ static ssize_t presto_psdev_write(struct file *file, const char *buf,
/* move data into response buffer. */
/* move data into response buffer. */
if
(
req
->
rq_bufsize
<
count
)
{
if
(
req
->
rq_bufsize
<
count
)
{
CERROR
(
"psdev_write: too much cnt: %d, cnt: %d, "
CERROR
(
"psdev_write: too much cnt: %d, cnt: %
Z
d, "
"opc: %d, uniq: %d.
\n
"
,
"opc: %d, uniq: %d.
\n
"
,
req
->
rq_bufsize
,
count
,
hdr
.
opcode
,
hdr
.
unique
);
req
->
rq_bufsize
,
count
,
hdr
.
opcode
,
hdr
.
unique
);
count
=
req
->
rq_bufsize
;
/* don't have more space! */
count
=
req
->
rq_bufsize
;
/* don't have more space! */
...
@@ -281,7 +281,7 @@ static ssize_t presto_psdev_read(struct file * file, char * buf,
...
@@ -281,7 +281,7 @@ static ssize_t presto_psdev_read(struct file * file, char * buf,
}
}
if
(
count
<
req
->
rq_bufsize
)
{
if
(
count
<
req
->
rq_bufsize
)
{
CERROR
(
"psdev_read: buffer too small, read %d of %d bytes
\n
"
,
CERROR
(
"psdev_read: buffer too small, read %
Z
d of %d bytes
\n
"
,
count
,
req
->
rq_bufsize
);
count
,
req
->
rq_bufsize
);
}
}
...
@@ -592,8 +592,8 @@ int izo_upc_upcall(int minor, int *size, struct izo_upcall_hdr *buffer,
...
@@ -592,8 +592,8 @@ int izo_upc_upcall(int minor, int *size, struct izo_upcall_hdr *buffer,
req
->
rq_opcode
,
jiffies
-
req
->
rq_posttime
,
req
->
rq_opcode
,
jiffies
-
req
->
rq_posttime
,
req
->
rq_unique
,
req
->
rq_rep_size
);
req
->
rq_unique
,
req
->
rq_rep_size
);
CDEBUG
(
D_UPCALL
,
CDEBUG
(
D_UPCALL
,
"..process %d woken up by Lento for req at 0x%
x, data at %x
\n
"
,
"..process %d woken up by Lento for req at 0x%
p, data at %p
\n
"
,
current
->
pid
,
(
int
)
req
,
(
int
)
req
->
rq_data
);
current
->
pid
,
req
,
req
->
rq_data
);
if
(
channel
->
uc_pid
)
{
/* i.e. Lento is still alive */
if
(
channel
->
uc_pid
)
{
/* i.e. Lento is still alive */
/* Op went through, interrupt or not we go on */
/* Op went through, interrupt or not we go on */
...
...
fs/intermezzo/upcall.c
View file @
e7b8d7bd
...
@@ -142,7 +142,10 @@ int izo_upc_kml(int minor, __u64 offset, __u32 first_recno, __u64 length, __u32
...
@@ -142,7 +142,10 @@ int izo_upc_kml(int minor, __u64 offset, __u32 first_recno, __u64 length, __u32
CDEBUG
(
D_UPCALL
,
"KML: fileset %s, offset %Lu, length %Lu, "
CDEBUG
(
D_UPCALL
,
"KML: fileset %s, offset %Lu, length %Lu, "
"first %u, last %d; minor %d
\n
"
,
"first %u, last %d; minor %d
\n
"
,
fsetname
,
hdr
->
u_offset
,
hdr
->
u_length
,
hdr
->
u_first_recno
,
fsetname
,
(
unsigned
long
long
)
hdr
->
u_offset
,
(
unsigned
long
long
)
hdr
->
u_length
,
hdr
->
u_first_recno
,
hdr
->
u_last_recno
,
minor
);
hdr
->
u_last_recno
,
minor
);
error
=
izo_upc_upcall
(
minor
,
&
size
,
hdr
,
ASYNCHRONOUS
);
error
=
izo_upc_upcall
(
minor
,
&
size
,
hdr
,
ASYNCHRONOUS
);
...
@@ -174,7 +177,9 @@ int izo_upc_kml_truncate(int minor, __u64 length, __u32 last_recno, char *fsetna
...
@@ -174,7 +177,9 @@ int izo_upc_kml_truncate(int minor, __u64 length, __u32 last_recno, char *fsetna
CDEBUG
(
D_UPCALL
,
"KML TRUNCATE: fileset %s, length %Lu, "
CDEBUG
(
D_UPCALL
,
"KML TRUNCATE: fileset %s, length %Lu, "
"last recno %d, minor %d
\n
"
,
"last recno %d, minor %d
\n
"
,
fsetname
,
hdr
->
u_length
,
hdr
->
u_last_recno
,
minor
);
fsetname
,
(
unsigned
long
long
)
hdr
->
u_length
,
hdr
->
u_last_recno
,
minor
);
error
=
izo_upc_upcall
(
minor
,
&
size
,
hdr
,
ASYNCHRONOUS
);
error
=
izo_upc_upcall
(
minor
,
&
size
,
hdr
,
ASYNCHRONOUS
);
...
...
include/asm-sparc/asmmacro.h
View file @
e7b8d7bd
...
@@ -18,17 +18,6 @@
...
@@ -18,17 +18,6 @@
#define GET_PROCESSOR4D_ID(reg) \
#define GET_PROCESSOR4D_ID(reg) \
lda [%g0] ASI_M_VIKING_TMP1, %reg;
lda [%g0] ASI_M_VIKING_TMP1, %reg;
/* Blackbox */
#define GET_PROCESSOR_ID(reg) \
sethi %hi(___b_smp_processor_id), %reg; \
sethi %hi(boot_cpu_id), %reg; \
ldub [%reg + %lo(boot_cpu_id)], %reg;
#define GET_PROCESSOR_MID(reg) \
rd %tbr, %reg; \
srl %reg, 12, %reg; \
and %reg, 3, %reg;
/* All trap entry points _must_ begin with this macro or else you
/* All trap entry points _must_ begin with this macro or else you
* lose. It makes sure the kernel has a proper window so that
* lose. It makes sure the kernel has a proper window so that
* c-code can be called.
* c-code can be called.
...
...
include/asm-sparc/smp.h
View file @
e7b8d7bd
...
@@ -53,8 +53,8 @@ void smp_info(struct seq_file *);
...
@@ -53,8 +53,8 @@ void smp_info(struct seq_file *);
BTFIXUPDEF_CALL
(
void
,
smp_cross_call
,
smpfunc_t
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
)
BTFIXUPDEF_CALL
(
void
,
smp_cross_call
,
smpfunc_t
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
)
BTFIXUPDEF_CALL
(
void
,
smp_message_pass
,
int
,
int
,
unsigned
long
,
int
)
BTFIXUPDEF_CALL
(
void
,
smp_message_pass
,
int
,
int
,
unsigned
long
,
int
)
BTFIXUPDEF_CALL
(
int
,
__smp_processor_id
,
void
)
BTFIXUPDEF_CALL
(
int
,
__
hard_
smp_processor_id
,
void
)
BTFIXUPDEF_BLACKBOX
(
smp_processor_id
)
BTFIXUPDEF_BLACKBOX
(
hard_
smp_processor_id
)
BTFIXUPDEF_BLACKBOX
(
load_current
)
BTFIXUPDEF_BLACKBOX
(
load_current
)
#define smp_cross_call(func,arg1,arg2,arg3,arg4,arg5) BTFIXUP_CALL(smp_cross_call)(func,arg1,arg2,arg3,arg4,arg5)
#define smp_cross_call(func,arg1,arg2,arg3,arg4,arg5) BTFIXUP_CALL(smp_cross_call)(func,arg1,arg2,arg3,arg4,arg5)
...
@@ -129,7 +129,7 @@ extern __inline__ int hard_smp_processor_id(void)
...
@@ -129,7 +129,7 @@ extern __inline__ int hard_smp_processor_id(void)
"=&r" (cpuid));
"=&r" (cpuid));
See btfixup.h and btfixupprep.c to understand how a blackbox works.
See btfixup.h and btfixupprep.c to understand how a blackbox works.
*/
*/
__asm__
__volatile__
(
"sethi %%hi(___b_smp_processor_id), %0
\n\t
"
__asm__
__volatile__
(
"sethi %%hi(___b_
hard_
smp_processor_id), %0
\n\t
"
"sethi %%hi(boot_cpu_id), %0
\n\t
"
"sethi %%hi(boot_cpu_id), %0
\n\t
"
"ldub [%0 + %%lo(boot_cpu_id)], %0
\n\t
"
:
"ldub [%0 + %%lo(boot_cpu_id)], %0
\n\t
"
:
"=&r"
(
cpuid
));
"=&r"
(
cpuid
));
...
@@ -141,7 +141,7 @@ extern __inline__ int hard_smp_processor_id(void)
...
@@ -141,7 +141,7 @@ extern __inline__ int hard_smp_processor_id(void)
int
cpuid
;
int
cpuid
;
__asm__
__volatile__
(
"mov %%o7, %%g1
\n\t
"
__asm__
__volatile__
(
"mov %%o7, %%g1
\n\t
"
"call ___f___smp_processor_id
\n\t
"
"call ___f___
hard_
smp_processor_id
\n\t
"
" nop
\n\t
"
" nop
\n\t
"
"mov %%g2, %0
\n\t
"
:
"=r"
(
cpuid
)
:
:
"g1"
,
"g2"
);
"mov %%g2, %0
\n\t
"
:
"=r"
(
cpuid
)
:
:
"g1"
,
"g2"
);
return
cpuid
;
return
cpuid
;
...
...
scripts/modpost.c
View file @
e7b8d7bd
...
@@ -141,26 +141,14 @@ new_symbol(const char *name, struct module *module, unsigned int *crc)
...
@@ -141,26 +141,14 @@ new_symbol(const char *name, struct module *module, unsigned int *crc)
symbolhash
[
hash
]
=
new
;
symbolhash
[
hash
]
=
new
;
}
}
#define DOTSYM_PFX "__dot_"
struct
symbol
*
struct
symbol
*
find_symbol
(
const
char
*
name
)
find_symbol
(
const
char
*
name
)
{
{
struct
symbol
*
s
;
struct
symbol
*
s
;
char
dotname
[
64
+
sizeof
(
DOTSYM_PFX
)];
/* .foo matches foo. PPC64 needs this. */
/*
For our purposes,
.foo matches foo. PPC64 needs this. */
if
(
name
[
0
]
==
'.'
)
{
if
(
name
[
0
]
==
'.'
)
name
++
;
name
++
;
strcpy
(
dotname
,
DOTSYM_PFX
);
strncat
(
dotname
,
name
,
sizeof
(
dotname
)
-
sizeof
(
DOTSYM_PFX
)
-
1
);
dotname
[
sizeof
(
dotname
)
-
1
]
=
0
;
/* Sparc32 wants .foo to match __dot_foo, try this first. */
for
(
s
=
symbolhash
[
tdb_hash
(
dotname
)
%
SYMBOL_HASH_SIZE
];
s
;
s
=
s
->
next
)
{
if
(
strcmp
(
s
->
name
,
dotname
)
==
0
)
return
s
;
}
}
for
(
s
=
symbolhash
[
tdb_hash
(
name
)
%
SYMBOL_HASH_SIZE
];
s
;
s
=
s
->
next
)
{
for
(
s
=
symbolhash
[
tdb_hash
(
name
)
%
SYMBOL_HASH_SIZE
];
s
;
s
=
s
->
next
)
{
if
(
strcmp
(
s
->
name
,
name
)
==
0
)
if
(
strcmp
(
s
->
name
,
name
)
==
0
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment