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
1cd013d0
Commit
1cd013d0
authored
Jun 05, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/davem/BK/sparc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
fa8d24b9
26b39845
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
148 additions
and
608 deletions
+148
-608
arch/sparc/kernel/devices.c
arch/sparc/kernel/devices.c
+28
-29
arch/sparc/mm/sun4c.c
arch/sparc/mm/sun4c.c
+71
-460
arch/sparc64/kernel/Makefile
arch/sparc64/kernel/Makefile
+0
-5
arch/sparc64/kernel/sys_sparc32.c
arch/sparc64/kernel/sys_sparc32.c
+25
-16
arch/sparc64/mm/generic.c
arch/sparc64/mm/generic.c
+3
-13
include/asm-sparc/btfixup.h
include/asm-sparc/btfixup.h
+16
-27
include/asm-sparc/page.h
include/asm-sparc/page.h
+2
-2
include/asm-sparc/ultra.h
include/asm-sparc/ultra.h
+0
-52
include/asm-sparc/vac-ops.h
include/asm-sparc/vac-ops.h
+0
-2
include/asm-sparc64/page.h
include/asm-sparc64/page.h
+3
-2
No files found.
arch/sparc/kernel/devices.c
View file @
1cd013d0
...
...
@@ -22,8 +22,8 @@ extern void cpu_probe(void);
extern
void
clock_stop_probe
(
void
);
/* tadpole.c */
extern
void
sun4c_probe_memerr_reg
(
void
);
unsigned
long
__init
device_scan
(
unsigned
long
mem_start
)
void
__init
device_scan
(
void
)
{
char
node_str
[
128
];
int
thismid
;
...
...
@@ -37,46 +37,45 @@ device_scan(unsigned long mem_start)
int
scan
;
scan
=
prom_getchild
(
prom_root_node
);
/* One can look it up in PROM instead */
/* prom_printf("root child is %08lx\n", (unsigned long) scan); */
while
((
scan
=
prom_getsibling
(
scan
))
!=
0
)
{
prom_getstring
(
scan
,
"device_type"
,
node_str
,
sizeof
(
node_str
));
if
(
strcmp
(
node_str
,
"cpu"
)
==
0
)
{
while
((
scan
=
prom_getsibling
(
scan
))
!=
0
)
{
prom_getstring
(
scan
,
"device_type"
,
node_str
,
sizeof
(
node_str
));
if
(
strcmp
(
node_str
,
"cpu"
)
==
0
)
{
linux_cpus
[
linux_num_cpus
].
prom_node
=
scan
;
prom_getproperty
(
scan
,
"mid"
,
(
char
*
)
&
thismid
,
sizeof
(
thismid
));
prom_getproperty
(
scan
,
"mid"
,
(
char
*
)
&
thismid
,
sizeof
(
thismid
));
linux_cpus
[
linux_num_cpus
].
mid
=
thismid
;
/* prom_printf("Found CPU %d <node=%08lx,mid=%d>\n", linux_num_cpus, (unsigned long) scan, thismid); */
printk
(
"Found CPU %d <node=%08lx,mid=%d>
\n
"
,
linux_num_cpus
,
(
unsigned
long
)
scan
,
thismid
);
printk
(
"Found CPU %d <node=%08lx,mid=%d>
\n
"
,
linux_num_cpus
,
(
unsigned
long
)
scan
,
thismid
);
linux_num_cpus
++
;
}
}
if
(
linux_num_cpus
==
0
)
{
if
(
sparc_cpu_model
==
sun4d
)
{
scan
=
prom_getchild
(
prom_root_node
);
for
(
scan
=
prom_searchsiblings
(
scan
,
"cpu-unit"
);
scan
;
scan
=
prom_searchsiblings
(
prom_getsibling
(
scan
),
"cpu-unit"
))
{
int
node
=
prom_getchild
(
scan
);
if
(
linux_num_cpus
==
0
&&
sparc_cpu_model
==
sun4d
)
{
scan
=
prom_getchild
(
prom_root_node
);
for
(
scan
=
prom_searchsiblings
(
scan
,
"cpu-unit"
);
scan
;
scan
=
prom_searchsiblings
(
prom_getsibling
(
scan
),
"cpu-unit"
))
{
int
node
=
prom_getchild
(
scan
);
prom_getstring
(
node
,
"device_type"
,
node_str
,
sizeof
(
node_str
));
if
(
strcmp
(
node_str
,
"cpu"
)
==
0
)
{
prom_getproperty
(
node
,
"cpu-id"
,
(
char
*
)
&
thismid
,
sizeof
(
thismid
));
linux_cpus
[
linux_num_cpus
].
prom_node
=
node
;
linux_cpus
[
linux_num_cpus
].
mid
=
thismid
;
/* prom_printf("Found CPU %d <node=%08lx,mid=%d>\n",
linux_num_cpus, (unsigned long) node, thismid); */
printk
(
"Found CPU %d <node=%08lx,mid=%d>
\n
"
,
linux_num_cpus
,
(
unsigned
long
)
node
,
thismid
);
linux_num_cpus
++
;
}
prom_getstring
(
node
,
"device_type"
,
node_str
,
sizeof
(
node_str
));
if
(
strcmp
(
node_str
,
"cpu"
)
==
0
)
{
prom_getproperty
(
node
,
"cpu-id"
,
(
char
*
)
&
thismid
,
sizeof
(
thismid
));
linux_cpus
[
linux_num_cpus
].
prom_node
=
node
;
linux_cpus
[
linux_num_cpus
].
mid
=
thismid
;
printk
(
"Found CPU %d <node=%08lx,mid=%d>
\n
"
,
linux_num_cpus
,
(
unsigned
long
)
node
,
thismid
);
linux_num_cpus
++
;
}
}
}
if
(
linux_num_cpus
==
0
)
{
if
(
linux_num_cpus
==
0
)
{
printk
(
"No CPU nodes found, cannot continue.
\n
"
);
/* Probably a sun4e, Sun is trying to trick us ;-) */
halt
();
}
printk
(
"Found %d CPU prom device tree node(s).
\n
"
,
linux_num_cpus
);
}
;
}
cpu_probe
();
#ifdef CONFIG_SUN_AUXIO
...
...
@@ -92,5 +91,5 @@ device_scan(unsigned long mem_start)
if
(
ARCH_SUN4C_SUN4
)
sun4c_probe_memerr_reg
();
return
mem_start
;
return
;
}
arch/sparc/mm/sun4c.c
View file @
1cd013d0
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/Makefile
View file @
1cd013d0
...
...
@@ -31,11 +31,6 @@ else
endif
endif
#
# This is just to get the dependencies...
#
binfmt_elf32.o
:
$(TOPDIR)/fs/binfmt_elf.c
ifneq
($(NEW_GCC),y)
CMODEL_CFLAG
:=
-mmedlow
else
...
...
arch/sparc64/kernel/sys_sparc32.c
View file @
1cd013d0
...
...
@@ -2879,16 +2879,19 @@ do_execve32(char * filename, u32 * argv, u32 * envp, struct pt_regs * regs)
bprm
.
sh_bang
=
0
;
bprm
.
loader
=
0
;
bprm
.
exec
=
0
;
if
((
bprm
.
argc
=
count32
(
argv
,
bprm
.
p
/
sizeof
(
u32
)))
<
0
)
{
allow_write_access
(
file
);
fput
(
file
);
return
bprm
.
argc
;
}
if
((
bprm
.
envc
=
count32
(
envp
,
bprm
.
p
/
sizeof
(
u32
)))
<
0
)
{
allow_write_access
(
file
);
fput
(
file
);
return
bprm
.
envc
;
}
bprm
.
mm
=
mm_alloc
();
retval
=
-
ENOMEM
;
if
(
!
bprm
.
mm
)
goto
out_file
;
bprm
.
argc
=
count32
(
argv
,
bprm
.
p
/
sizeof
(
u32
));
if
((
retval
=
bprm
.
argc
)
<
0
)
goto
out_mm
;
bprm
.
envc
=
count32
(
envp
,
bprm
.
p
/
sizeof
(
u32
));
if
((
retval
=
bprm
.
envc
)
<
0
)
goto
out_mm
;
retval
=
prepare_binprm
(
&
bprm
);
if
(
retval
<
0
)
...
...
@@ -2914,14 +2917,20 @@ do_execve32(char * filename, u32 * argv, u32 * envp, struct pt_regs * regs)
out:
/* Something went wrong, return the inode and free the argument pages*/
allow_write_access
(
bprm
.
file
);
if
(
bprm
.
file
)
fput
(
bprm
.
file
);
for
(
i
=
0
;
i
<
MAX_ARG_PAGES
;
i
++
)
{
struct
page
*
page
=
bprm
.
page
[
i
];
if
(
page
)
__free_page
(
page
);
}
for
(
i
=
0
;
i
<
MAX_ARG_PAGES
;
i
++
)
if
(
bprm
.
page
[
i
])
__free_page
(
bprm
.
page
[
i
]);
out_mm:
mmdrop
(
bprm
.
mm
);
out_file:
if
(
bprm
.
file
)
{
allow_write_access
(
bprm
.
file
);
fput
(
bprm
.
file
);
}
return
retval
;
}
...
...
arch/sparc64/mm/generic.c
View file @
1cd013d0
...
...
@@ -17,20 +17,10 @@
static
inline
void
forget_pte
(
pte_t
page
)
{
if
(
pte_none
(
page
))
return
;
if
(
pte_present
(
page
))
{
unsigned
long
pfn
=
pte_pfn
(
page
);
struct
page
*
ptpage
;
if
(
!
pfn_valid
(
pfn
))
return
;
ptpage
=
pfn_to_page
(
page
);
if
(
PageReserved
(
ptpage
))
return
;
page_cache_release
(
ptpage
);
return
;
if
(
!
pte_none
(
page
))
{
printk
(
"forget_pte: old mapping existed!
\n
"
);
BUG
();
}
swap_free
(
pte_to_swp_entry
(
page
));
}
/* Remap IO memory, the same way as remap_page_range(), but use
...
...
include/asm-sparc/btfixup.h
View file @
1cd013d0
...
...
@@ -16,7 +16,22 @@ extern unsigned int ___illegal_use_of_BTFIXUP_SIMM13_in_module(void);
extern
unsigned
int
___illegal_use_of_BTFIXUP_SETHI_in_module
(
void
);
extern
unsigned
int
___illegal_use_of_BTFIXUP_HALF_in_module
(
void
);
extern
unsigned
int
___illegal_use_of_BTFIXUP_INT_in_module
(
void
);
#endif
#define BTFIXUP_SIMM13(__name) ___illegal_use_of_BTFIXUP_SIMM13_in_module()
#define BTFIXUP_HALF(__name) ___illegal_use_of_BTFIXUP_HALF_in_module()
#define BTFIXUP_SETHI(__name) ___illegal_use_of_BTFIXUP_SETHI_in_module()
#define BTFIXUP_INT(__name) ___illegal_use_of_BTFIXUP_INT_in_module()
#define BTFIXUP_BLACKBOX(__name) ___illegal_use_of_BTFIXUP_BLACKBOX_in_module
#else
#define BTFIXUP_SIMM13(__name) ___sf_##__name()
#define BTFIXUP_HALF(__name) ___af_##__name()
#define BTFIXUP_SETHI(__name) ___hf_##__name()
#define BTFIXUP_INT(__name) ((unsigned int)&___i_##__name)
/* This must be written in assembly and present in a sethi */
#define BTFIXUP_BLACKBOX(__name) ___b_##__name
#endif
/* MODULE */
/* Fixup call xx */
...
...
@@ -30,12 +45,6 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void);
#define BTFIXUPDEF_BLACKBOX(__name) \
extern unsigned ___bs_##__name[2];
#ifdef MODULE
#define BTFIXUP_BLACKBOX(__name) ___illegal_use_of_BTFIXUP_BLACKBOX_in_module
#else
/* This must be written in assembly and present in a sethi */
#define BTFIXUP_BLACKBOX(__name) ___b_##__name
#endif
/* Put bottom 13bits into some register variable */
...
...
@@ -55,11 +64,6 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void);
__asm__ ("or %%g0, ___s_" #__name "__btset_" #__val ", %0" : "=r"(ret));\
return ret; \
}
#ifdef MODULE
#define BTFIXUP_SIMM13(__name) ___illegal_use_of_BTFIXUP_SIMM13_in_module()
#else
#define BTFIXUP_SIMM13(__name) ___sf_##__name()
#endif
/* Put either bottom 13 bits, or upper 22 bits into some register variable
* (depending on the value, this will lead into sethi FIX, reg; or
...
...
@@ -82,11 +86,6 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void);
__asm__ ("or %%g0, ___a_" #__name "__btset_" #__val ", %0" : "=r"(ret));\
return ret; \
}
#ifdef MODULE
#define BTFIXUP_HALF(__name) ___illegal_use_of_BTFIXUP_HALF_in_module()
#else
#define BTFIXUP_HALF(__name) ___af_##__name()
#endif
/* Put upper 22 bits into some register variable */
...
...
@@ -107,22 +106,12 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void);
"=r"(ret)); \
return ret; \
}
#ifdef MODULE
#define BTFIXUP_SETHI(__name) ___illegal_use_of_BTFIXUP_SETHI_in_module()
#else
#define BTFIXUP_SETHI(__name) ___hf_##__name()
#endif
/* Put a full 32bit integer into some register variable */
#define BTFIXUPDEF_INT(__name) \
extern unsigned char ___i_##__name; \
extern unsigned ___is_##__name[2];
#ifdef MODULE
#define BTFIXUP_INT(__name) ___illegal_use_of_BTFIXUP_INT_in_module()
#else
#define BTFIXUP_INT(__name) ((unsigned int)&___i_##__name)
#endif
#define BTFIXUPCALL_NORM 0x00000000
/* Always call */
#define BTFIXUPCALL_NOP 0x01000000
/* Possibly optimize to nop */
...
...
include/asm-sparc/page.h
View file @
1cd013d0
...
...
@@ -54,8 +54,8 @@
#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE)
#define clear_user_page(
page, vaddr) clear_page(page
)
#define copy_user_page(to, from, vaddr) copy_page(to, from)
#define clear_user_page(
addr, vaddr, page) clear_page(addr
)
#define copy_user_page(to, from, vaddr
, page
) copy_page(to, from)
/* The following structure is used to hold the physical
* memory configuration of the machine. This is filled in
...
...
include/asm-sparc/ultra.h
deleted
100644 → 0
View file @
fa8d24b9
/* $Id: ultra.h,v 1.2 1995/11/25 02:33:10 davem Exp $
* ultra.h: Definitions and defines for the TI V9 UltraSparc.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
*/
#ifndef _SPARC_ULTRA_H
#define _SPARC_ULTRA_H
/* Spitfire MMU control register:
*
* ----------------------------------------------------------
* | | IMPL | VERS | | MID | |
* ----------------------------------------------------------
* 64 31-28 27-24 23-22 21-17 16 0
*
* IMPL: Implementation of this Spitfire.
* VERS: Version of this Spitfire.
* MID: Module ID of this processor.
*/
#define SPITFIRE_MIDMASK 0x00000000003e0000
/* Spitfire Load Store Unit control register:
*
* ---------------------------------------------------------------------
* | RSV | PWR | PWW | VWR | VWW | RSV | PMASK | DME | IME | DCE | ICE |
* ---------------------------------------------------------------------
* 63-25 24 23 22 21 20 19-4 3 2 1 0
*
* PWR: Physical Watchpoint Read enable: 0=off 1=on
* PWW: Physical Watchpoint Write enable: 0=off 1=on
* VWR: Virtual Watchpoint Read enable: 0=off 1=on
* VWW: Virtual Watchpoint Write enable: 0=off 1=on
* PMASK: Parity MASK ???
* DME: Data MMU Enable: 0=off 1=on
* IME: Instruction MMU Enable: 0=off 1=on
* DCE: Data Cache Enable: 0=off 1=on
* ICE: Instruction Cache Enable: 0=off 1=on
*/
#define SPITFIRE_LSU_PWR 0x01000000
#define SPITFIRE_LSU_PWW 0x00800000
#define SPITFIRE_LSU_VWR 0x00400000
#define SPITFIRE_LSU_VWW 0x00200000
#define SPITFIRE_LSU_PMASK 0x000ffff0
#define SPITFIRE_LSU_DME 0x00000008
#define SPITFIRE_LSU_IME 0x00000004
#define SPITFIRE_LSU_DCE 0x00000002
#define SPITFIRE_LSU_ICE 0x00000001
#endif
/* !(_SPARC_ULTRA_H) */
include/asm-sparc/vac-ops.h
View file @
1cd013d0
...
...
@@ -107,8 +107,6 @@ struct sun4c_vac_props {
extern
struct
sun4c_vac_props
sun4c_vacinfo
;
extern
void
sun4c_flush_all
(
void
);
/* sun4c_enable_vac() enables the sun4c virtual address cache. */
extern
__inline__
void
sun4c_enable_vac
(
void
)
{
...
...
include/asm-sparc64/page.h
View file @
1cd013d0
...
...
@@ -35,8 +35,9 @@ extern void do_BUG(const char *file, int line);
extern
void
_clear_page
(
void
*
page
);
#define clear_page(X) _clear_page((void *)(X))
extern
void
clear_user_page
(
void
*
page
,
unsigned
long
vaddr
);
extern
void
copy_user_page
(
void
*
to
,
void
*
from
,
unsigned
long
vaddr
);
struct
page
;
extern
void
clear_user_page
(
void
*
addr
,
unsigned
long
vaddr
,
struct
page
*
page
);
extern
void
copy_user_page
(
void
*
to
,
void
*
from
,
unsigned
long
vaddr
,
struct
page
*
topage
);
/* GROSS, defining this makes gcc pass these types as aggregates,
* and thus on the stack, turn this crap off... -DaveM
...
...
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