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
Kirill Smelkov
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
Hide 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
...
@@ -631,8 +632,9 @@ int izo_get_fileid(struct file *dir, struct izo_ioctl_data *data)
...
@@ -631,8 +632,9 @@ int izo_get_fileid(struct file *dir, struct izo_ioctl_data *data)
data
->
ioc_generation
=
file
->
f_dentry
->
d_inode
->
i_generation
;
data
->
ioc_generation
=
file
->
f_dentry
->
d_inode
->
i_generation
;
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