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
8b24ea63
Commit
8b24ea63
authored
Mar 17, 2003
by
Anton Blanchard
Browse files
Options
Browse Files
Download
Plain Diff
Merge samba.org:/scratch/anton/linux-2.5
into samba.org:/scratch/anton/sfr
parents
baf1aaad
96ee7da2
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
328 additions
and
780 deletions
+328
-780
arch/ppc64/boot/main.c
arch/ppc64/boot/main.c
+1
-2
arch/ppc64/kernel/chrp_setup.c
arch/ppc64/kernel/chrp_setup.c
+2
-0
arch/ppc64/kernel/eeh.c
arch/ppc64/kernel/eeh.c
+1
-0
arch/ppc64/kernel/entry.S
arch/ppc64/kernel/entry.S
+4
-4
arch/ppc64/kernel/head.S
arch/ppc64/kernel/head.S
+3
-3
arch/ppc64/kernel/irq.c
arch/ppc64/kernel/irq.c
+0
-79
arch/ppc64/kernel/misc.S
arch/ppc64/kernel/misc.S
+2
-2
arch/ppc64/kernel/pSeries_pci.c
arch/ppc64/kernel/pSeries_pci.c
+249
-292
arch/ppc64/kernel/pci.c
arch/ppc64/kernel/pci.c
+21
-54
arch/ppc64/kernel/pci.h
arch/ppc64/kernel/pci.h
+1
-1
arch/ppc64/kernel/prom.c
arch/ppc64/kernel/prom.c
+2
-2
arch/ppc64/kernel/sys32.S
arch/ppc64/kernel/sys32.S
+0
-284
arch/ppc64/kernel/sys_ppc32.c
arch/ppc64/kernel/sys_ppc32.c
+0
-33
arch/ppc64/xmon/xmon.c
arch/ppc64/xmon/xmon.c
+24
-10
include/asm-ppc64/compat.h
include/asm-ppc64/compat.h
+15
-1
include/asm-ppc64/fcntl.h
include/asm-ppc64/fcntl.h
+1
-12
include/asm-ppc64/pci-bridge.h
include/asm-ppc64/pci-bridge.h
+2
-1
No files found.
arch/ppc64/boot/main.c
View file @
8b24ea63
...
...
@@ -12,12 +12,11 @@
#include "ppc32-types.h"
#include "zlib.h"
#include <linux/elf.h>
#include <linux/string.h>
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/bootinfo.h>
void
memmove
(
void
*
dst
,
void
*
im
,
int
len
);
extern
void
*
finddevice
(
const
char
*
);
extern
int
getprop
(
void
*
,
const
char
*
,
void
*
,
int
);
extern
void
printk
(
char
*
fmt
,
...);
...
...
arch/ppc64/kernel/chrp_setup.c
View file @
8b24ea63
...
...
@@ -72,6 +72,7 @@ extern void init_ras_IRQ(void);
extern
void
find_and_init_phbs
(
void
);
extern
void
pSeries_pcibios_fixup
(
void
);
extern
void
pSeries_pcibios_fixup_bus
(
struct
pci_bus
*
bus
);
extern
void
iSeries_pcibios_fixup
(
void
);
extern
void
pSeries_get_rtc_time
(
struct
rtc_time
*
rtc_time
);
...
...
@@ -245,6 +246,7 @@ chrp_init(unsigned long r3, unsigned long r4, unsigned long r5,
#ifndef CONFIG_PPC_ISERIES
ppc_md
.
pcibios_fixup
=
pSeries_pcibios_fixup
;
ppc_md
.
pcibios_fixup_bus
=
pSeries_pcibios_fixup_bus
;
#else
ppc_md
.
pcibios_fixup
=
NULL
;
// ppc_md.pcibios_fixup = iSeries_pcibios_fixup;
...
...
arch/ppc64/kernel/eeh.c
View file @
8b24ea63
...
...
@@ -26,6 +26,7 @@
#include <linux/pci.h>
#include <linux/proc_fs.h>
#include <linux/bootmem.h>
#include <linux/mm.h>
#include <asm/paca.h>
#include <asm/processor.h>
#include <asm/naca.h>
...
...
arch/ppc64/kernel/entry.S
View file @
8b24ea63
...
...
@@ -344,8 +344,8 @@ irq_recheck:
recheck
:
mfmsr
r10
/*
Get
current
interrupt
state
*/
li
r4
,
0
ori
r4
,
r4
,
MSR_EE
|
MSR_RI
andc
r10
,
r10
,
r4
/*
clear
MSR_EE
and
MSR_RI
*/
ori
r4
,
r4
,
MSR_EE
andc
r10
,
r10
,
r4
/*
clear
MSR_EE
*/
mtmsrd
r10
,
1
/*
Update
machine
state
*/
#ifdef CONFIG_PPC_ISERIES
...
...
@@ -396,7 +396,7 @@ restore:
mfmsr
r0
li
r2
,
MSR_RI
andc
r0
,
r0
,
r2
mtmsrd
r0
mtmsrd
r0
,
1
ld
r0
,
_MSR
(
r1
)
mtspr
SRR1
,
r0
...
...
@@ -422,7 +422,7 @@ restore:
/*
Note
:
this
must
change
if
we
start
using
the
TIF_NOTIFY_RESUME
bit
*/
do_work
:
/
*
Enable
interrupts
*/
ori
r10
,
r10
,
MSR_EE
|
MSR_RI
ori
r10
,
r10
,
MSR_EE
mtmsrd
r10
,
1
andi
.
r0
,
r3
,
_TIF_NEED_RESCHED
...
...
arch/ppc64/kernel/head.S
View file @
8b24ea63
...
...
@@ -562,7 +562,7 @@ fast_exception_return:
mfmsr
r20
li
r21
,
MSR_RI
andc
r20
,
r20
,
r21
mtmsrd
r20
mtmsrd
r20
,
1
mtspr
SRR1
,
r23
mtspr
SRR0
,
r22
...
...
@@ -989,7 +989,7 @@ _GLOBAL(do_stab_bolted)
mfmsr
r22
li
r23
,
MSR_RI
andc
r22
,
r22
,
r23
mtmsrd
r22
mtmsrd
r22
,
1
ld
r22
,
EX_SRR0
(
r21
)
/*
Get
SRR0
from
exc
.
frame
*/
ld
r23
,
EX_SRR1
(
r21
)
/*
Get
SRR1
from
exc
.
frame
*/
...
...
@@ -1094,7 +1094,7 @@ SLB_NUM_ENTRIES = 64
mfmsr
r22
li
r23
,
MSR_RI
andc
r22
,
r22
,
r23
mtmsrd
r22
mtmsrd
r22
,
1
ld
r22
,
EX_SRR0
(
r21
)
/*
Get
SRR0
from
exc
.
frame
*/
ld
r23
,
EX_SRR1
(
r21
)
/*
Get
SRR1
from
exc
.
frame
*/
...
...
arch/ppc64/kernel/irq.c
View file @
8b24ea63
...
...
@@ -398,81 +398,6 @@ handle_irq_event(int irq, struct pt_regs *regs, struct irqaction *action)
local_irq_disable
();
}
#ifdef CONFIG_SMP
extern
unsigned
long
irq_affinity
[
NR_IRQS
];
typedef
struct
{
unsigned
long
cpu
;
unsigned
long
timestamp
;
}
____cacheline_aligned
irq_balance_t
;
static
irq_balance_t
irq_balance
[
NR_IRQS
]
__cacheline_aligned
=
{
[
0
...
NR_IRQS
-
1
]
=
{
0
,
0
}
};
#define IDLE_ENOUGH(cpu,now) \
(idle_cpu(cpu) && ((now) - irq_stat[(cpu)].idle_timestamp > 1))
#define IRQ_ALLOWED(cpu,allowed_mask) \
((1UL << cpu) & (allowed_mask))
#define IRQ_BALANCE_INTERVAL (HZ/50)
static
unsigned
long
move
(
unsigned
long
curr_cpu
,
unsigned
long
allowed_mask
,
unsigned
long
now
,
int
direction
)
{
int
search_idle
=
1
;
int
cpu
=
curr_cpu
;
goto
inside
;
do
{
if
(
unlikely
(
cpu
==
curr_cpu
))
search_idle
=
0
;
inside:
if
(
direction
==
1
)
{
cpu
++
;
if
(
cpu
>=
NR_CPUS
)
cpu
=
0
;
}
else
{
cpu
--
;
if
(
cpu
==
-
1
)
cpu
=
NR_CPUS
-
1
;
}
}
while
(
!
cpu_online
(
cpu
)
||
!
IRQ_ALLOWED
(
cpu
,
allowed_mask
)
||
(
search_idle
&&
!
IDLE_ENOUGH
(
cpu
,
now
)));
return
cpu
;
}
static
inline
void
balance_irq
(
int
irq
)
{
irq_balance_t
*
entry
=
irq_balance
+
irq
;
unsigned
long
now
=
jiffies
;
if
(
unlikely
(
time_after
(
now
,
entry
->
timestamp
+
IRQ_BALANCE_INTERVAL
)))
{
unsigned
long
allowed_mask
;
unsigned
int
new_cpu
;
unsigned
long
random_number
;
if
(
!
irq_desc
[
irq
].
handler
->
set_affinity
)
return
;
random_number
=
mftb
();
random_number
&=
1
;
allowed_mask
=
cpu_online_map
&
irq_affinity
[
irq
];
entry
->
timestamp
=
now
;
new_cpu
=
move
(
entry
->
cpu
,
allowed_mask
,
now
,
random_number
);
if
(
entry
->
cpu
!=
new_cpu
)
{
entry
->
cpu
=
new_cpu
;
irq_desc
[
irq
].
handler
->
set_affinity
(
irq
,
1UL
<<
new_cpu
);
}
}
}
#else
#define balance_irq(irq) do { } while (0)
#endif
/*
* Eventually, this should take an array of interrupts and an array size
* so it can dispatch multiple interrupts.
...
...
@@ -484,10 +409,6 @@ void ppc_irq_dispatch_handler(struct pt_regs *regs, int irq)
int
cpu
=
smp_processor_id
();
irq_desc_t
*
desc
=
irq_desc
+
irq
;
/* XXX This causes bad performance and lockups on XICS - Anton */
if
(
naca
->
interrupt_controller
==
IC_OPEN_PIC
)
balance_irq
(
irq
);
kstat_cpu
(
cpu
).
irqs
[
irq
]
++
;
spin_lock
(
&
desc
->
lock
);
ack_irq
(
irq
);
...
...
arch/ppc64/kernel/misc.S
View file @
8b24ea63
...
...
@@ -557,7 +557,7 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys32_umount
.
llong
.
sys_ni_syscall
/*
old
lock
syscall
*/
.
llong
.
sys32_ioctl
.
llong
.
sys32_fcntl
/*
55
*/
.
llong
.
compat_sys_fcntl
/*
55
*/
.
llong
.
sys_ni_syscall
/*
old
mpx
syscall
*/
.
llong
.
sys32_setpgid
.
llong
.
sys_ni_syscall
/*
old
ulimit
syscall
*/
...
...
@@ -706,7 +706,7 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_ni_syscall
/*
reserved
for
MacOnLinux
*/
.
llong
.
sys_getdents64
.
llong
.
sys_pivot_root
.
llong
.
sys32
_fcntl64
.
llong
.
compat_sys
_fcntl64
.
llong
.
sys_madvise
/*
205
*/
.
llong
.
sys_mincore
.
llong
.
sys_gettid
...
...
arch/ppc64/kernel/pSeries_pci.c
View file @
8b24ea63
This diff is collapsed.
Click to expand it.
arch/ppc64/kernel/pci.c
View file @
8b24ea63
...
...
@@ -49,7 +49,6 @@ static void fixup_windbond_82c105(struct pci_dev* dev);
void
fixup_resources
(
struct
pci_dev
*
dev
);
void
iSeries_pcibios_init
(
void
);
void
pSeries_pcibios_init
(
void
);
struct
pci_controller
*
hose_head
;
struct
pci_controller
**
hose_tail
=
&
hose_head
;
...
...
@@ -363,16 +362,33 @@ pcibios_assign_resources(void)
* Allocate pci_controller(phb) initialized common variables.
*/
struct
pci_controller
*
__init
pci_alloc_pci_controller
(
char
*
model
,
enum
phb_types
controller_type
)
pci_alloc_pci_controller
(
enum
phb_types
controller_type
)
{
struct
pci_controller
*
hose
;
PPCDBG
(
PPCDBG_PHBINIT
,
"PCI: Allocate pci_controller for %s
\n
"
,
model
);
char
*
model
;
hose
=
(
struct
pci_controller
*
)
alloc_bootmem
(
sizeof
(
struct
pci_controller
));
if
(
hose
==
NULL
)
{
printk
(
KERN_ERR
"PCI: Allocate pci_controller failed.
\n
"
);
return
NULL
;
}
memset
(
hose
,
0
,
sizeof
(
struct
pci_controller
));
switch
(
controller_type
)
{
case
phb_type_python
:
model
=
"PHB PY"
;
break
;
case
phb_type_speedwagon
:
model
=
"PHB SW"
;
break
;
case
phb_type_winnipeg
:
model
=
"PHB WP"
;
break
;
default:
model
=
"PHB UK"
;
break
;
}
if
(
strlen
(
model
)
<
8
)
strcpy
(
hose
->
what
,
model
);
else
...
...
@@ -393,9 +409,7 @@ pcibios_init(void)
struct
pci_bus
*
bus
;
int
next_busno
;
#ifndef CONFIG_PPC_ISERIES
pSeries_pcibios_init
();
#else
#ifdef CONFIG_PPC_ISERIES
iSeries_pcibios_init
();
#endif
...
...
@@ -450,54 +464,7 @@ subsys_initcall(pcibios_init);
void
__init
pcibios_fixup_bus
(
struct
pci_bus
*
bus
)
{
#ifndef CONFIG_PPC_ISERIES
struct
pci_controller
*
phb
=
PCI_GET_PHB_PTR
(
bus
);
struct
resource
*
res
;
int
i
;
if
(
bus
->
parent
==
NULL
)
{
/* This is a host bridge - fill in its resources */
phb
->
bus
=
bus
;
bus
->
resource
[
0
]
=
res
=
&
phb
->
io_resource
;
if
(
!
res
->
flags
)
BUG
();
/* No I/O resource for this PHB? */
for
(
i
=
0
;
i
<
3
;
++
i
)
{
res
=
&
phb
->
mem_resources
[
i
];
if
(
!
res
->
flags
)
{
if
(
i
==
0
)
BUG
();
/* No memory resource for this PHB? */
}
bus
->
resource
[
i
+
1
]
=
res
;
}
}
else
{
/* This is a subordinate bridge */
pci_read_bridge_bases
(
bus
);
for
(
i
=
0
;
i
<
4
;
++
i
)
{
if
((
res
=
bus
->
resource
[
i
])
==
NULL
)
continue
;
if
(
!
res
->
flags
)
continue
;
if
(
res
==
pci_find_parent_resource
(
bus
->
self
,
res
))
{
/* Transparent resource -- don't try to "fix" it. */
continue
;
}
if
(
res
->
flags
&
IORESOURCE_IO
)
{
unsigned
long
offset
=
(
unsigned
long
)
phb
->
io_base_virt
-
pci_io_base
;
res
->
start
+=
offset
;
res
->
end
+=
offset
;
}
else
if
(
phb
->
pci_mem_offset
&&
(
res
->
flags
&
IORESOURCE_MEM
))
{
if
(
res
->
start
<
phb
->
pci_mem_offset
)
{
res
->
start
+=
phb
->
pci_mem_offset
;
res
->
end
+=
phb
->
pci_mem_offset
;
}
}
}
}
#endif
if
(
ppc_md
.
pcibios_fixup_bus
)
if
(
ppc_md
.
pcibios_fixup_bus
)
ppc_md
.
pcibios_fixup_bus
(
bus
);
}
...
...
arch/ppc64/kernel/pci.h
View file @
8b24ea63
...
...
@@ -14,7 +14,7 @@
extern
unsigned
long
isa_io_base
;
extern
struct
pci_controller
*
pci_alloc_pci_controller
(
char
*
model
,
enum
phb_types
controller_type
);
extern
struct
pci_controller
*
pci_alloc_pci_controller
(
enum
phb_types
controller_type
);
extern
struct
pci_controller
*
pci_find_hose_for_OF_device
(
struct
device_node
*
node
);
extern
struct
pci_controller
*
hose_head
;
...
...
arch/ppc64/kernel/prom.c
View file @
8b24ea63
...
...
@@ -2040,11 +2040,11 @@ prom_bi_rec_verify(struct bi_record *bi_recs)
if
(
bi_recs
==
NULL
||
bi_recs
->
tag
!=
BI_FIRST
)
return
NULL
;
last
=
(
struct
bi_record
*
)
bi_recs
->
data
[
0
];
last
=
(
struct
bi_record
*
)
(
long
)
bi_recs
->
data
[
0
];
if
(
last
==
NULL
||
last
->
tag
!=
BI_LAST
)
return
NULL
;
first
=
(
struct
bi_record
*
)
last
->
data
[
0
];
first
=
(
struct
bi_record
*
)
(
long
)
last
->
data
[
0
];
if
(
first
==
NULL
||
first
!=
bi_recs
)
return
NULL
;
...
...
arch/ppc64/kernel/sys32.S
View file @
8b24ea63
...
...
@@ -25,287 +25,3 @@ _GLOBAL(ppc32_lseek)
extsw
r4
,
r4
/*
sign
extend
off_t
offset
parm
*/
b
.
sys_lseek
_GLOBAL
(
compat_sys_socketcall
)
/
*
r3
=
call
,
r4
=
args
*/
cmpwi
r3
,
1
blt
-
.
do_einval
cmpwi
r3
,
17
bgt
-
.
do_einval
subi
r3
,
r3
,
1
/*
index
into
socketcall_table
vectors
and
jmp
*/
sldi
r3
,
r3
,
3
/*
each
entry
is
8
bytes
*/
LOADADDR
(
r10
,.
socketcall_table_begin
)
ldx
r10
,
r10
,
r3
mtctr
r10
bctr
/*
Socket
function
vectored
fix
ups
for
32
bit
*/
_STATIC
(
do_sys_socket
)
/
*
sys_socket
(
int
,
int
,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwa
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
b
.
sys_socket
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_bind
)
/
*
sys_bind
(
int
fd
,
struct
sockaddr
*,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
b
.
sys_bind
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_connect
)
/
*
sys_connect
(
int
,
struct
sockaddr
*,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
b
.
sys_connect
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_listen
)
/
*
sys_listen
(
int
,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwa
r4
,
4
(
r10
)
b
.
sys_listen
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_accept
)
/
*
sys_accept
(
int
,
struct
sockaddr
*,
int
*)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
b
.
sys_accept
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_getsockname
)
/
*
sys_getsockname
(
int
,
struct
sockaddr
*,
int
*)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
b
.
sys_getsockname
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_getpeername
)
/
*
sys_getpeername
(
int
,
struct
sockaddr
*,
int
*)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
b
.
sys_getpeername
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_socketpair
)
/
*
sys_socketpair
(
int
,
int
,
int
,
int
*)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwa
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
b
.
sys_socketpair
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_send
)
/
*
sys_send
(
int
,
void
*,
size_t
,
unsigned
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
b
.
sys_send
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_recv
)
/
*
sys_recv
(
int
,
void
*,
size_t
,
unsigned
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
b
.
sys_recv
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_sendto
)
/
*
sys32_sendto
(
int
,
u32
,
compat_size_t
,
unsigned
int
,
u32
,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
5
:
lwz
r7
,
16
(
r10
)
6
:
lwz
r8
,
20
(
r10
)
b
.
sys_sendto
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
llong
5
b
,
.
do_efault
.
llong
6
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_recvfrom
)
/
*
sys32_recvfrom
(
int
,
u32
,
compat_size_t
,
unsigned
int
,
u32
,
u32
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwz
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
5
:
lwz
r7
,
16
(
r10
)
6
:
lwz
r8
,
20
(
r10
)
b
.
sys_recvfrom
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
llong
5
b
,
.
do_efault
.
llong
6
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_shutdown
)
/
*
sys_shutdown
(
int
,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwa
r4
,
4
(
r10
)
b
.
sys_shutdown
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_setsockopt
)
/
*
compat_sys_setsockopt
(
int
,
int
,
int
,
char
*,
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwa
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
5
:
lwa
r7
,
16
(
r10
)
b
.
compat_sys_setsockopt
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
llong
5
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_getsockopt
)
/
*
compat_sys_getsockopt
(
int
,
int
,
int
,
u32
,
u32
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwa
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
4
:
lwz
r6
,
12
(
r10
)
5
:
lwz
r7
,
16
(
r10
)
b
.
compat_sys_getsockopt
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
llong
4
b
,
.
do_efault
.
llong
5
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_sendmsg
)
/
*
compat_sys_sendmsg
(
int
,
struct
compat_msghdr
*,
unsigned
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
b
.
compat_sys_sendmsg
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_sys_recvmsg
)
/
*
compat_sys_recvmsg
(
int
,
struct
compat_msghdr
*,
unsigned
int
)
*/
mr
r10
,
r4
1
:
lwa
r3
,
0
(
r10
)
2
:
lwz
r4
,
4
(
r10
)
3
:
lwa
r5
,
8
(
r10
)
b
.
compat_sys_recvmsg
.
section
__ex_table
,
"a"
.
align
3
.
llong
1
b
,
.
do_efault
.
llong
2
b
,
.
do_efault
.
llong
3
b
,
.
do_efault
.
previous
_STATIC
(
do_einval
)
li
r3
,-
EINVAL
blr
_STATIC
(
do_efault
)
li
r3
,-
EFAULT
blr
.
balign
8
_GLOBAL
(
socketcall_table_begin
)
.
llong
.
do_sys_socket
.
llong
.
do_sys_bind
.
llong
.
do_sys_connect
.
llong
.
do_sys_listen
.
llong
.
do_sys_accept
.
llong
.
do_sys_getsockname
.
llong
.
do_sys_getpeername
.
llong
.
do_sys_socketpair
.
llong
.
do_sys_send
.
llong
.
do_sys_recv
.
llong
.
do_sys_sendto
.
llong
.
do_sys_recvfrom
.
llong
.
do_sys_shutdown
.
llong
.
do_sys_setsockopt
.
llong
.
do_sys_getsockopt
.
llong
.
do_sys_sendmsg
.
llong
.
do_sys_recvmsg
_GLOBAL
(
socketcall_table_end
)
arch/ppc64/kernel/sys_ppc32.c
View file @
8b24ea63
...
...
@@ -246,32 +246,6 @@ asmlinkage long sys32_writev(int fd, struct compat_iovec *vector, u32 count)
return
ret
;
}
extern
asmlinkage
long
sys_fcntl
(
unsigned
int
fd
,
unsigned
int
cmd
,
unsigned
long
arg
);
asmlinkage
long
sys32_fcntl
(
unsigned
int
fd
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
switch
(
cmd
)
{
case
F_GETLK
:
case
F_SETLK
:
case
F_SETLKW
:
{
struct
flock
f
;
mm_segment_t
old_fs
;
long
ret
;
if
(
get_compat_flock
(
&
f
,
(
struct
compat_flock
*
)
arg
))
return
-
EFAULT
;
old_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
ret
=
sys_fcntl
(
fd
,
cmd
,
(
unsigned
long
)
&
f
);
set_fs
(
old_fs
);
if
(
put_compat_flock
(
&
f
,
(
struct
compat_flock
*
)
arg
))
return
-
EFAULT
;
return
ret
;
}
default:
return
sys_fcntl
(
fd
,
cmd
,
(
unsigned
long
)
arg
);
}
}
struct
ncp_mount_data32_v3
{
int
version
;
unsigned
int
ncp_fd
;
...
...
@@ -2848,13 +2822,6 @@ asmlinkage long sys32_umount(char * name, u32 flags)
return
sys_umount
(
name
,
(
int
)
flags
);
}
asmlinkage
long
sys32_fcntl64
(
unsigned
int
fd
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
if
(
cmd
>=
F_GETLK64
&&
cmd
<=
F_SETLKW64
)
return
sys_fcntl
(
fd
,
cmd
+
F_GETLK
-
F_GETLK64
,
arg
);
return
sys32_fcntl
(
fd
,
cmd
,
arg
);
}
struct
__sysctl_args32
{
u32
name
;
int
nlen
;
...
...
arch/ppc64/xmon/xmon.c
View file @
8b24ea63
...
...
@@ -1381,16 +1381,23 @@ mread(unsigned long adrs, void *buf, int size)
char
*
p
,
*
q
;
n
=
0
;
if
(
setjmp
(
bus_error_jmp
)
==
0
)
{
if
(
setjmp
(
bus_error_jmp
)
==
0
)
{
debugger_fault_handler
=
handle_fault
;
sync
();
p
=
(
char
*
)
adrs
;
q
=
(
char
*
)
buf
;
p
=
(
char
*
)
adrs
;
q
=
(
char
*
)
buf
;
switch
(
size
)
{
case
2
:
*
(
short
*
)
q
=
*
(
short
*
)
p
;
break
;
case
4
:
*
(
int
*
)
q
=
*
(
int
*
)
p
;
break
;
case
2
:
*
(
short
*
)
q
=
*
(
short
*
)
p
;
break
;
case
4
:
*
(
int
*
)
q
=
*
(
int
*
)
p
;
break
;
case
8
:
*
(
long
*
)
q
=
*
(
long
*
)
p
;
break
;
default:
for
(
;
n
<
size
;
++
n
)
{
for
(
;
n
<
size
;
++
n
)
{
*
q
++
=
*
p
++
;
sync
();
}
...
...
@@ -1411,16 +1418,23 @@ mwrite(unsigned long adrs, void *buf, int size)
char
*
p
,
*
q
;
n
=
0
;
if
(
setjmp
(
bus_error_jmp
)
==
0
)
{
if
(
setjmp
(
bus_error_jmp
)
==
0
)
{
debugger_fault_handler
=
handle_fault
;
sync
();
p
=
(
char
*
)
adrs
;
q
=
(
char
*
)
buf
;
switch
(
size
)
{
case
2
:
*
(
short
*
)
p
=
*
(
short
*
)
q
;
break
;
case
4
:
*
(
int
*
)
p
=
*
(
int
*
)
q
;
break
;
case
2
:
*
(
short
*
)
p
=
*
(
short
*
)
q
;
break
;
case
4
:
*
(
int
*
)
p
=
*
(
int
*
)
q
;
break
;
case
8
:
*
(
long
*
)
p
=
*
(
long
*
)
q
;
break
;
default:
for
(
;
n
<
size
;
++
n
)
{
for
(
;
n
<
size
;
++
n
)
{
*
p
++
=
*
q
++
;
sync
();
}
...
...
include/asm-ppc64/compat.h
View file @
8b24ea63
...
...
@@ -61,7 +61,18 @@ struct compat_flock {
compat_off_t
l_start
;
compat_off_t
l_len
;
compat_pid_t
l_pid
;
short
__unused
;
};
#define F_GETLK64 12
/* using 'struct flock64' */
#define F_SETLK64 13
#define F_SETLKW64 14
struct
compat_flock64
{
short
l_type
;
short
l_whence
;
compat_loff_t
l_start
;
compat_loff_t
l_len
;
compat_pid_t
l_pid
;
};
struct
compat_statfs
{
...
...
@@ -84,4 +95,7 @@ typedef u32 compat_old_sigset_t;
typedef
u32
compat_sigset_word
;
#define COMPAT_OFF_T_MAX 0x7fffffff
#define COMPAT_LOFF_T_MAX 0x7fffffffffffffffL
#endif
/* _ASM_PPC64_COMPAT_H */
include/asm-ppc64/fcntl.h
View file @
8b24ea63
...
...
@@ -42,10 +42,6 @@
#define F_SETSIG 10
/* for sockets. */
#define F_GETSIG 11
/* for sockets. */
#define F_GETLK64 12
/* using 'struct flock64' */
#define F_SETLK64 13
#define F_SETLKW64 14
/* for F_[GET|SET]FL */
#define FD_CLOEXEC 1
/* actually anything with low bit set goes */
...
...
@@ -87,13 +83,6 @@ struct flock {
pid_t
l_pid
;
};
struct
flock64
{
short
l_type
;
short
l_whence
;
loff_t
l_start
;
loff_t
l_len
;
pid_t
l_pid
;
};
#define F_LINUX_SPECIFIC_BASE 1024
#endif
/* _PPC64_FCNTL_H */
include/asm-ppc64/pci-bridge.h
View file @
8b24ea63
...
...
@@ -20,7 +20,8 @@ enum phb_types {
phb_type_unknown
=
0x0
,
phb_type_hypervisor
=
0x1
,
phb_type_python
=
0x10
,
phb_type_speedwagon
=
0x11
phb_type_speedwagon
=
0x11
,
phb_type_winnipeg
=
0x12
};
/*
...
...
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