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
1e694d81
Commit
1e694d81
authored
Jan 01, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://ppc.bkbits.net/for-linus-ppc64
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
ce17d12e
6c0f62fc
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
453 additions
and
959 deletions
+453
-959
arch/ppc64/Makefile
arch/ppc64/Makefile
+20
-34
arch/ppc64/boot/Makefile
arch/ppc64/boot/Makefile
+85
-89
arch/ppc64/boot/main.c
arch/ppc64/boot/main.c
+6
-0
arch/ppc64/defconfig
arch/ppc64/defconfig
+23
-27
arch/ppc64/kernel/Makefile
arch/ppc64/kernel/Makefile
+25
-33
arch/ppc64/kernel/chrp_setup.c
arch/ppc64/kernel/chrp_setup.c
+1
-1
arch/ppc64/kernel/head.S
arch/ppc64/kernel/head.S
+11
-12
arch/ppc64/kernel/init_task.c
arch/ppc64/kernel/init_task.c
+1
-1
arch/ppc64/kernel/ioctl32.c
arch/ppc64/kernel/ioctl32.c
+28
-29
arch/ppc64/kernel/irq.c
arch/ppc64/kernel/irq.c
+9
-12
arch/ppc64/kernel/misc.S
arch/ppc64/kernel/misc.S
+4
-44
arch/ppc64/kernel/pSeries_pci.c
arch/ppc64/kernel/pSeries_pci.c
+1
-6
arch/ppc64/kernel/pci_dma.c
arch/ppc64/kernel/pci_dma.c
+16
-1
arch/ppc64/kernel/prom.c
arch/ppc64/kernel/prom.c
+12
-272
arch/ppc64/kernel/rtc.c
arch/ppc64/kernel/rtc.c
+57
-54
arch/ppc64/kernel/setup.c
arch/ppc64/kernel/setup.c
+6
-0
arch/ppc64/kernel/smp.c
arch/ppc64/kernel/smp.c
+26
-26
arch/ppc64/kernel/sys_ppc32.c
arch/ppc64/kernel/sys_ppc32.c
+37
-100
arch/ppc64/kernel/time.c
arch/ppc64/kernel/time.c
+6
-2
arch/ppc64/kernel/xics.c
arch/ppc64/kernel/xics.c
+4
-13
arch/ppc64/lib/Makefile
arch/ppc64/lib/Makefile
+5
-3
arch/ppc64/lib/memcpy.S
arch/ppc64/lib/memcpy.S
+1
-1
arch/ppc64/mm/Makefile
arch/ppc64/mm/Makefile
+2
-2
arch/ppc64/oprofile/Makefile
arch/ppc64/oprofile/Makefile
+2
-2
arch/ppc64/xmon/Makefile
arch/ppc64/xmon/Makefile
+2
-2
arch/ppc64/xmon/start.c
arch/ppc64/xmon/start.c
+3
-116
include/asm-ppc64/compat.h
include/asm-ppc64/compat.h
+36
-0
include/asm-ppc64/page.h
include/asm-ppc64/page.h
+1
-1
include/asm-ppc64/pgtable.h
include/asm-ppc64/pgtable.h
+2
-2
include/asm-ppc64/ppc32.h
include/asm-ppc64/ppc32.h
+12
-52
include/asm-ppc64/prom.h
include/asm-ppc64/prom.h
+1
-10
include/asm-ppc64/smp.h
include/asm-ppc64/smp.h
+1
-1
include/asm-ppc64/tlb.h
include/asm-ppc64/tlb.h
+2
-2
include/asm-ppc64/topology.h
include/asm-ppc64/topology.h
+1
-1
include/asm-ppc64/xics.h
include/asm-ppc64/xics.h
+4
-8
No files found.
arch/ppc64/Makefile
View file @
1e694d81
...
...
@@ -13,61 +13,47 @@
# Adjusted for PPC64 by Tom Gall
#
KERNELLOAD
=
0xc000000000000000
KERNELLOAD
=
0xc000000000000000
LDFLAGS
:=
-m
elf64ppc
LDFLAGS_vmlinux
=
-Bstatic
\
-e
$(KERNELLOAD)
-Ttext
$(KERNELLOAD)
LDFLAGS_vmlinux
=
-Bstatic
-e
$(KERNELLOAD)
-Ttext
$(KERNELLOAD)
LDFLAGS_BLOB
:=
--format
binary
--oformat
elf64-powerpc
CFLAGS
:=
$(CFLAGS)
-msoft-float
-pipe
\
CFLAGS
+=
-msoft-float
-pipe
\
-Wno-uninitialized
-mminimal-toc
-mtraceback
=
full
\
-finline-limit-2000
-mcpu
=
power4
CPP
=
$(CC)
-E
$(CFLAGS)
HEAD
:=
arch
/ppc64/kernel/head.o
core-y
+=
arch
/ppc64/kernel/
arch
/ppc64/mm/
arch
/ppc64/lib/
core-$(CONFIG_XMON)
+=
arch
/ppc64/xmon/
# FIXME: is drivers- right ?
drivers-$(CONFIG_OPROFILE)
+=
arch
/ppc64/oprofile/
makeboot
=
$(
call
descend,arch/ppc64/boot,
$(1)
)
ifdef
CONFIG_PPC_PSERIES
BOOT_TARGETS
=
zImage zImage.initrd
endif
libs-y
+=
arch
/ppc64/lib/
core-y
+=
arch
/ppc64/kernel/
core-y
+=
arch
/ppc64/mm/
core-$(CONFIG_XMON)
+=
arch
/ppc64/xmon/
drivers-$(CONFIG_OPROFILE)
+=
arch
/ppc64/oprofile/
ifdef
CONFIG_PPC_ISERIES
BOOT_TARGETS
=
vmlinux.sminitrd vmlinux.initrd vmlinux.sm
endif
makeboot
=
$(Q)$(MAKE)
-f
scripts/Makefile.build
obj
=
arch
/ppc64/boot
$(1)
$(BOOT_TARGETS)
:
vmlinux
@
$(
call
makeboot,arch/ppc64/boot/
$@
)
boottarget-$(CONFIG_PPC_PSERIES)
:=
zImage zImage.initrd
boottarget-$(CONFIG_PPC_ISERIES)
:=
vmlinux.sminitrd vmlinux.initrd vmlinux.sm
$(boottarget-y)
:
vmlinux
$(
call
makeboot,arch/ppc64/boot/
$@
)
%_config
:
arch/ppc64/configs/%_defconfig
rm
-f
.config
arch
/ppc64/defconfig
cp
-f
arch
/ppc64/configs/
$
(
@:config
=
defconfig
)
arch
/ppc64/defconfig
archclean
:
@
$(
call
makeboot,clean
)
$(Q)$(MAKE)
-f
scripts/Makefile.clean
obj
=
arch
/ppc64/boot
archmrproper
:
prepare
:
include/asm-ppc64/offsets.h
prepare
:
include/asm-$(ARCH)/offsets.h
arch/$(ARCH)/kernel/asm-offsets.s
:
include/asm include/linux/version.h
\
arch/ppc64/kernel/asm-offsets.s
:
include/asm include/linux/version.h
\
include/config/MARKER
include/asm-$(ARCH)/offsets.h.tmp
:
arch/$(ARCH)/kernel/asm-offsets.s
@
$
(
generate-asm-offsets.h
)
<
$<
>
$@
include/asm-$(ARCH)/offsets.h
:
include/asm-$(ARCH)/offsets.h.tmp
include/asm-ppc64/offsets.h
:
arch/ppc64/kernel/asm-offsets.s
@
echo
-n
' Generating $@'
@
$
(
generate-asm-offsets.h
)
<
$<
>
$@
.tmp
@
$
(
update-if-changed
)
CLEAN_FILES
+=
include/asm-
$(ARCH)
/offsets.h.tmp
\
include/asm-
$(ARCH)
/offsets.h
CLEAN_FILES
+=
include/asm-
ppc64
/offsets.h.tmp
\
include/asm-
ppc64
/offsets.h
arch/ppc64/boot/Makefile
View file @
1e694d81
...
...
@@ -23,92 +23,88 @@
CROSS32_COMPILE
=
#CROSS32_COMPILE = /usr/local/ppc/bin/powerpc-linux-
BOOTCC
=
$(CROSS32_COMPILE)
gcc
BOOTCFLAGS
=
$(HOSTCFLAGS)
-I
$(objtree)
/include
BOOTLD
=
$(CROSS32_COMPILE)
ld
BOOTAS
=
$(CROSS32_COMPILE)
as
BOOTAFLAGS
=
-D__ASSEMBLY__
$(HOSTCFLAGS)
$(obj)/start.o
:
$(obj)/start.c
$(BOOTCC)
$(BOOTCFLAGS)
-c
-o
$*
.o
$<
$(obj)/main.o
:
$(obj)/main.c
$(BOOTCC)
$(BOOTCFLAGS)
-c
-o
$*
.o
$<
$(obj)/zlib.o
:
$(obj)/zlib.c
$(BOOTCC)
$(BOOTCFLAGS)
-c
-o
$*
.o
$<
$(obj)/imagesize.o
:
$(obj)/imagesize.c
$(BOOTCC)
$(BOOTCFLAGS)
-c
-o
$*
.o
$<
$(obj)/no_initrd.o
:
$(obj)/no_initrd.c
$(BOOTCC)
$(BOOTCFLAGS)
-c
-o
$*
.o
$<
$(obj)/crt0.o
:
$(obj)/crt0.S
$(BOOTCC)
$(BOOTAFLAGS)
-traditional
-c
-o
$*
.o
$<
CFLAGS
=
$(CPPFLAGS)
-O
-fno-builtin
-DSTDC_HEADERS
LD_ARGS
=
-Ttext
0x00400000
-e
_start
OBJCOPYFLAGS
:=
-S
-O
binary
OBJS
=
$(
addprefix
$(obj)
/,crt0.o start.o main.o zlib.o image.o imagesize.o
)
ifeq
($(CONFIG_PPC_ISERIES),y)
boot
:
vmlinux.sm
$(obj)/addSystemMap
:
$(obj)/addSystemMap.c
$(HOSTCC)
$(HOSTCFLAGS)
-o
$@
$<
$(obj)/vmlinux.sm
:
vmlinux $(obj)/addSystemMap
$(obj)
/addSystemMap System.map vmlinux
$(obj)
/vmlinux.sm
$(obj)/addRamDisk
:
$(obj)/addRamDisk.c
$(HOSTCC)
$(HOSTCFLAGS)
-o
$@
$<
$(obj)/vmlinux.initrd
:
vmlinux $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map
$(obj)
/addRamDisk
$(obj)
/ramdisk.image.gz System.map vmlinux
$(obj)
/vmlinux.initrd
$(obj)/vmlinux.sminitrd
:
$(obj)/vmlinux.sm $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map
$(obj)
/addRamDisk
$(obj)
/ramdisk.image.gz System.map
$(obj)
/vmlinux.sm
$(obj)
/vmlinux.sminitrd
else
boot
:
zImage
endif
$(obj)/piggyback
:
$(obj)/piggyback.c
$(HOSTCC)
$(HOSTCFLAGS)
-DKERNELBASE
=
$(KERNELBASE)
-o
$@
$<
$(obj)/addnote
:
$(obj)/addnote.c
$(HOSTCC)
$(HOSTCFLAGS)
-o
$@
$<
$(obj)/image.o
:
$(obj)/piggyback $(obj)/vmlinux.gz
$(obj)
/piggyback
$(obj)
/image <
$(obj)
/vmlinux.gz |
$(BOOTAS)
-o
$@
$(obj)/sysmap.o
:
$(obj)/piggyback System.map
$(obj)
/piggyback
$(obj)
/sysmap < System.map |
$(BOOTAS)
-o
$(obj)
/sysmap.o
$(obj)/initrd.o
:
$(obj)/ramdisk.image.gz $(obj)/piggyback
$(obj)
/piggyback
$(obj)
/initrd <
$(obj)
/ramdisk.image.gz |
$(BOOTAS)
-o
$(obj)
/initrd.o
$(obj)/zImage
:
$(OBJS) $(obj)/no_initrd.o $(obj)/addnote
$(BOOTLD)
$(LD_ARGS)
-T
$(obj)
/zImage.lds
-o
$@
$(OBJS)
$(obj)
/no_initrd.o
$(obj)
/addnote
$@
$(obj)/zImage.initrd
:
$(OBJS) $(obj)/initrd.o $(obj)/addnote
$(BOOTLD)
$(LD_ARGS)
-T
$(obj)
/zImage.lds
-o
$@
$(OBJS)
$(obj)
/initrd.o
./addnote
$@
$(obj)/vmlinux.gz
:
vmlinux
$(OBJCOPY)
$(OBJCOPYFLAGS)
vmlinux
$(obj)
/vmlinux
ls
-l
$(obj)
/vmlinux |
awk
'{printf "/* generated -- do not edit! */\nint uncompressed_size = %d;\n", $$5}'
>
$(obj)
/imagesize.c
$(CROSS_COMPILE)
nm
-n
vmlinux |
tail
-1
|
awk
'{printf "long vmlinux_end = 0x%s;\n", substr($$1,8)}'
>>
$(obj)
/imagesize.c
gzip
-vf9
$(obj)
/vmlinux
$(obj)/imagesize.c
:
$(obj)/vmlinux.gz
clean
:
@
rm
-f
$(OBJS)
@
rm
-f
$(
addprefix
$(obj)
/,piggyback note addnote zImage
\
zImage.initrd vmlinux.gz no_initrd.o imagesize.c addSystemMap
\
vmlinux.sm addRamDisk vmlinux.initrd vmlinux.sminitrd
)
BOOTCC
:=
$(CROSS32_COMPILE)
gcc
BOOTCFLAGS
:=
$(HOSTCFLAGS)
-Iinclude
BOOTLD
:=
$(CROSS32_COMPILE)
ld
BOOTAS
:=
$(CROSS32_COMPILE)
as
BOOTAFLAGS
:=
-D__ASSEMBLY__
$(HOSTCFLAGS)
CFLAGS
:=
$(CPPFLAGS)
-O
-fno-builtin
-DSTDC_HEADERS
LD_ARGS
:=
-Ttext
0x00400000
-e
_start
OBJCOPYFLAGS
:=
-S
-O
binary
obj-boot
:=
start.o main.o zlib.o imagesize.o no_initrd.o
OBJS
:=
crt0.o start.o main.o zlib.o imagesize.o image.o
obj-boot
:=
$(
addprefix
$(obj)
/,
$
(
obj-boot
))
OBJS
:=
$(
addprefix
$(obj)
/,
$(OBJS)
)
targets
+=
$
(
obj-boot
)
$(
addprefix
$(obj)
/,image.c image.o
)
quiet_cmd_bootcc
=
BOOTCC
$@
cmd_bootcc
=
$(BOOTCC)
-Wp
,-MD,
$(depfile)
$(BOOTCFLAGS)
-c
-o
$@
$<
$(obj-boot)
:
%.o: %.c FORCE
$(
call
if_changed_dep,bootcc
)
quiet_cmd_bootas
=
BOOTAS
$@
cmd_bootas
=
$(BOOTCC)
-Wp
,-MD,
$(depfile)
$(BOOTAFLAGS)
-traditional
\
-c
-o
$@
$<
$(obj)/crt0.o
:
%.o: %.S FORCE
$(
call
if_changed_dep,bootas
)
host-progs
:=
piggyback addnote addSystemMap addRamDisk
HOSTCFLAGS_piggyback.o
:=
-DKERNELBASE
=
$(KERNELBASE)
EXTRA_TARGETS
+=
zImage zImage.initrd vmlinux.bin vmlinux.gz
\
vmlinux.sm vmlinux.initrd vmlinux.sminitrd
\
sysmap.o initrd.o
quiet_cmd_sysmap
=
SYSMAP
$@
cmd_sysmap
=
$(obj)
/addSystemMap System.map
$<
$@
$(obj)/vmlinux.sm
:
vmlinux $(obj)/addSystemMap System.map FORCE
$(
call
if_changed,sysmap
)
quiet_cmd_ramdisk
=
RAMDISK
$@
cmd_ramdisk
=
$(obj)
/addRamDisk
$(obj)
/ramdisk.image.gz System.map
$<
$@
$(obj)/vmlinux.initrd
:
vmlinux $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map FORCE
$(
call
if_changed,ramdisk
)
$(obj)/vmlinux.sminitrd
:
$(obj)/vmlinux.sm $(obj)/addRamDisk $(obj)/ramdisk.image.gz FORCE
$(
call
if_changed,ramdisk
)
quiet_cmd_piggy
=
PIGGY
$@
cmd_piggy
=
$(obj)
/piggyback
$
(
@:.o
=)
<
$<
|
$(BOOTAS)
-o
$@
$(obj)/image.o
:
$(obj)/vmlinux.gz $(obj)/piggyback FORCE
$(
call
if_changed,piggy
)
$(obj)/sysmap.o
:
System.map $(obj)/piggyback FORCE
$(
call
if_changed,piggy
)
$(obj)/initrd.o
:
$(obj)/ramdisk.image.gz $(obj)/piggyback FORCE
$(
call
if_changed,piggy
)
quiet_cmd_addnote
=
ADDNOTE
$@
cmd_addnote
=
$(BOOTLD)
$(LD_ARGS)
-T
$(obj)
/zImage.lds
-o
$@
$(OBJS)
$<
\
&&
$(obj)
/addnote
$@
$(obj)/zImage
:
$(obj)/no_initrd.o $(OBJS) $(obj)/addnote FORCE
$(
call
if_changed,addnote
)
$(obj)/zImage.initrd
:
$(obj)/initrd.o $(OBJS) $(obj)/addnote FORCE
$(
call
if_changed,addnote
)
$(obj)/vmlinux.bin
:
vmlinux FORCE
$(
call
if_changed,objcopy
)
$(obj)/vmlinux.gz
:
$(obj)/vmlinux.bin FORCE
$(
call
if_changed,gzip
)
$(obj)/imagesize.c
:
vmlinux
@
echo
Generating
$@
ls
-l
vmlinux |
\
awk
'{printf "/* generated -- do not edit! */\n" \
"int uncompressed_size = %d;\n", $$5}'
>
$(obj)
/imagesize.c
$(CROSS_COMPILE)
nm
-n
vmlinux |
tail
-1
|
\
awk
'{printf "long vmlinux_end = 0x%s;\n", substr($$1,8)}'
\
>>
$(obj)
/imagesize.c
clean-files
:=
$(targets)
arch/ppc64/boot/main.c
View file @
1e694d81
...
...
@@ -14,6 +14,8 @@
#include <asm/page.h>
#include <asm/bootinfo.h>
#undef DEBUG
void
memmove
(
void
*
dst
,
void
*
im
,
int
len
);
extern
void
*
finddevice
(
const
char
*
);
...
...
@@ -90,7 +92,9 @@ chrpboot(unsigned long a1, unsigned long a2, void *prom)
for
(
claim_addr
=
PROG_START
;
claim_addr
<=
PROG_START
*
8
;
claim_addr
+=
0x100000
)
{
#ifdef DEBUG
printf
(
" trying: 0x%08lx
\n\r
"
,
claim_addr
);
#endif
dst
=
claim
(
claim_addr
,
uncompressed_size
,
0
);
if
(
dst
!=
(
void
*
)
-
1
)
break
;
}
...
...
@@ -118,6 +122,7 @@ chrpboot(unsigned long a1, unsigned long a2, void *prom)
bi_recs
=
make_bi_recs
((
unsigned
long
)
dst
+
vmlinux_end
);
kernel_entry
=
(
kernel_entry_t
)
dst
;
#ifdef DEBUG
printf
(
"kernel:
\n\r
"
" entry addr = 0x%lx
\n\r
"
" a1 = 0x%lx,
\n\r
"
...
...
@@ -126,6 +131,7 @@ chrpboot(unsigned long a1, unsigned long a2, void *prom)
" bi_recs = 0x%lx,
\n\r
"
,
(
unsigned
long
)
kernel_entry
,
a1
,
a2
,
(
unsigned
long
)
prom
,
(
unsigned
long
)
bi_recs
);
#endif
kernel_entry
(
a1
,
a2
,
prom
,
bi_recs
);
...
...
arch/ppc64/defconfig
View file @
1e694d81
...
...
@@ -7,6 +7,8 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_HAVE_DEC_LOCK=y
CONFIG_EARLY_PRINTK=y
CONFIG_COMPAT=y
CONFIG_FRAME_POINTER=y
#
# Code maturity level options
...
...
@@ -64,7 +66,7 @@ CONFIG_PROC_DEVICETREE=y
# CONFIG_PARPORT is not set
#
# Plug and Play
configuration
# Plug and Play
support
#
# CONFIG_PNP is not set
...
...
@@ -118,6 +120,7 @@ CONFIG_CHR_DEV_SG=y
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
...
...
@@ -411,6 +414,14 @@ CONFIG_HVC_CONSOLE=y
#
# CONFIG_I2C is not set
#
# I2C Hardware Sensors Mainboard support
#
#
# I2C Hardware Sensors Chip support
#
#
# Mice
#
...
...
@@ -563,31 +574,21 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_UTF8 is not set
#
# Console drivers
#
#
# Frame-buffer support
# Graphics support
#
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_CLGEN is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_CT65550 is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_S3TRIO is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_RIVA is not set
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G450=y
CONFIG_FB_MATROX_G100=y
CONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_3DFX is not set
...
...
@@ -595,19 +596,14 @@ CONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
CONFIG_FBCON_CFB16=y
CONFIG_FBCON_CFB24=y
CONFIG_FBCON_CFB32=y
CONFIG_FBCON_FONTWIDTH8_ONLY=y
# CONFIG_FONT_SUN8x16 is not set
CONFIG_FBCON_FONTS=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
# CONFIG_FONT_MINI_4x6 is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE is not set
#
# Sound
...
...
arch/ppc64/kernel/Makefile
View file @
1e694d81
#
# Makefile for the linux kernel.
# Makefile for the linux
ppc64
kernel.
#
EXTRA_CFLAGS
=
-mno-minimal-toc
KHEAD
:=
head.o
EXTRA_TARGETS
:=
$(KHEAD)
export-objs
:=
ppc_ksyms.o
EXTRA_CFLAGS
+=
-mno-minimal-toc
EXTRA_TARGETS
:=
head.o
export-objs
:=
ppc_ksyms.o
obj-y
:=
ppc_ksyms.o setup.o entry.o traps.o irq.o idle.o
\
time.o process.o signal.o syscalls.o misc.o ptrace.o
\
align.o semaphore.o bitops.o stab.o htab.o pacaData.o
\
LparData.o udbg.o binfmt_elf32.o sys_ppc32.o sys32.o
\
ioctl32.o ptrace32.o signal32.o open_pic.o xics.o
\
pmc.o mf_proc.o proc_pmc.o iSeries_setup.o
\
ItLpQueue.o hvCall.o mf.o HvLpEvent.o ras.o
\
iSeries_proc.o HvCall.o HvLpConfig.o
\
rtc.o init_task.o pSeries_htab.o
obj-$(CONFIG_PCI)
+=
pci.o pci_dn.o pci_dma.o
ifeq
($(CONFIG_PPC_ISERIES),y)
obj-$(CONFIG_PCI)
+=
iSeries_pci.o iSeries_pci_reset.o iSeries_IoMmTable.o iSeries_irq.o iSeries_VpdInfo.o XmPciLpEvent.o
endif
ifeq
($(CONFIG_PPC_PSERIES),y)
obj-$(CONFIG_PCI)
+=
pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o eeh.o
obj-y
+=
rtasd.o nvram.o
endif
obj-$(CONFIG_RTAS_FLASH)
+=
rtas_flash.o
obj-$(CONFIG_SMP)
+=
smp.o
obj-$(CONFIG_PROFILING)
+=
profile.o
obj-y
+=
prom.o lmb.o rtas.o rtas-proc.o chrp_setup.o i8259.o
udbg.o binfmt_elf32.o sys_ppc32.o sys32.o ioctl32.o
\
ptrace32.o signal32.o pmc.o rtc.o init_task.o
\
lmb.o pci.o pci_dn.o pci_dma.o
obj-$(CONFIG_PPC_ISERIES)
+=
iSeries_pci.o iSeries_pci_reset.o
\
iSeries_IoMmTable.o iSeries_irq.o
\
iSeries_VpdInfo.o XmPciLpEvent.o
\
HvCall.o HvLpConfig.o LparData.o mf_proc.o
\
proc_pmc.o iSeries_setup.o ItLpQueue.o hvCall.o
\
mf.o HvLpEvent.o iSeries_proc.o
obj-$(CONFIG_PPC_PSERIES)
+=
pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o
\
eeh.o rtasd.o nvram.o
# Change this to pSeries only once we've got iSeries up to date
obj-y
+=
open_pic.o xics.o pSeries_htab.o rtas.o
\
rtas-proc.o chrp_setup.o i8259.o ras.o prom.o
obj-$(CONFIG_RTAS_FLASH)
+=
rtas_flash.o
obj-$(CONFIG_SMP)
+=
smp.o
obj-$(CONFIG_PROFILING)
+=
profile.o
arch/ppc64/kernel/chrp_setup.c
View file @
1e694d81
...
...
@@ -60,7 +60,7 @@
#include "i8259.h"
#include "open_pic.h"
#include
"xics.h"
#include
<asm/xics.h>
#include <asm/ppcdebug.h>
extern
volatile
unsigned
char
*
chrp_int_ack_special
;
...
...
arch/ppc64/kernel/head.S
View file @
1e694d81
...
...
@@ -79,7 +79,7 @@
_stext
:
_STATIC
(
__start
)
b
.
__start_initialization_pSeries
#ifdef CONFIG_PPC_ISERIES
/
*
At
offset
0x20
,
there
is
a
pointer
to
iSeries
LPAR
data
.
*
This
is
required
by
the
hypervisor
*/
.
=
0x20
...
...
@@ -90,9 +90,7 @@ _STATIC(__start)
*
between
physical
addresses
and
absolute
addresses
)
and
*
to
the
pidhash
table
(
also
used
by
the
debugger
)
*/
.
llong
msChunks
-
KERNELBASE
#ifdef CONFIG_PPC_ISERIES
.
llong
pidhash
-
KERNELBASE
#endif
/
*
Offset
0x38
-
Pointer
to
start
of
embedded
System
.
map
*/
.
globl
embedded_sysmap_start
...
...
@@ -102,6 +100,7 @@ embedded_sysmap_start:
.
globl
embedded_sysmap_end
embedded_sysmap_end
:
.
llong
0
#endif
/
*
Secondary
processors
spin
on
this
value
until
it
goes
to
1
.
*/
.
globl
__secondary_hold_spinloop
...
...
@@ -365,11 +364,15 @@ __start_interupts:
*
point
to
itVpdAreas
.
On
pSeries
native
,
this
value
is
not
used
.
*/
.
=
0x4000
.
globl
__end_interupts
.
globl
__end_inter
r
upts
.
globl
__start_naca
__end_interupts
:
__start_naca
:
#ifdef CONFIG_PPC_ISERIES
.
llong
itVpdAreas
#else
.
llong
0x0
#endif
.
llong
0x0
.
llong
0x0
.
llong
paca
...
...
@@ -390,6 +393,7 @@ __start_stab:
.
globl
__end_stab
__end_stab
:
#ifdef CONFIG_PPC_ISERIES
/
*
*
The
iSeries
LPAR
map
is
at
this
fixed
address
*
so
that
the
HvReleaseData
structure
can
address
...
...
@@ -503,7 +507,7 @@ maskable_exception_exit:
mfspr
r21
,
SPRG1
mfspr
r20
,
SPRG2
rfid
#endif
/*
*
Data
area
reserved
for
FWNMI
option
.
*/
...
...
@@ -1217,7 +1221,7 @@ _GLOBAL(pseries_secondary_smp_init)
#endif
#endif
b
1
b
/*
Loop
until
told
to
go
*/
#ifdef CONFIG_PPC_ISERIES
_GLOBAL
(
__start_initialization_iSeries
)
LOADADDR
(
r1
,
init_thread_union
)
...
...
@@ -1241,6 +1245,7 @@ _GLOBAL(__start_initialization_iSeries)
bl
.
iSeries_fixup_klimit
b
.
start_here_common
#endif
_GLOBAL
(
__start_initialization_pSeries
)
mr
r31
,
r3
/*
save
parameters
*/
...
...
@@ -1248,9 +1253,6 @@ _GLOBAL(__start_initialization_pSeries)
mr
r29
,
r5
mr
r28
,
r6
mr
r27
,
r7
mr
r26
,
r8
/*
YABOOT
:
debug_print
()
routine
*/
mr
r25
,
r9
/*
YABOOT
:
debug_delay
()
routine
*/
mr
r24
,
r10
/*
YABOOT
:
debug_prom
()
routine
*/
bl
.
enable_64b_mode
...
...
@@ -1295,9 +1297,6 @@ _GLOBAL(__start_initialization_pSeries)
mr
r5
,
r29
mr
r6
,
r28
mr
r7
,
r27
mr
r8
,
r26
mr
r9
,
r25
mr
r10
,
r24
bl
.
prom_init
...
...
arch/ppc64/kernel/init_task.c
View file @
1e694d81
...
...
@@ -13,7 +13,7 @@ struct mm_struct init_mm = INIT_MM(init_mm);
/*
* Initial thread structure.
*
* We need to make sure that this is
8192
-byte aligned due to the
* We need to make sure that this is
16384
-byte aligned due to the
* way process stacks are handled. This is done by having a special
* "init_task" linker map entry..
*/
...
...
arch/ppc64/kernel/ioctl32.c
View file @
1e694d81
...
...
@@ -442,13 +442,13 @@ struct ifreq32 {
struct
ifmap32
ifru_map
;
char
ifru_slave
[
IFNAMSIZ
];
/* Just fits the size */
char
ifru_newname
[
IFNAMSIZ
];
__kernel_caddr_t32
ifru_data
;
compat_caddr_t
ifru_data
;
}
ifr_ifru
;
};
struct
ifconf32
{
int
ifc_len
;
/* size of buffer */
__kernel_caddr_t32
ifcbuf
;
compat_caddr_t
ifcbuf
;
};
#ifdef CONFIG_NET
...
...
@@ -884,7 +884,7 @@ struct floppy_struct32 {
unsigned
char
rate
;
unsigned
char
spec1
;
unsigned
char
fmt_gap
;
const
__kernel_caddr_t32
name
;
const
compat_caddr_t
name
;
};
struct
floppy_drive_params32
{
...
...
@@ -923,7 +923,7 @@ struct floppy_drive_struct32 {
int
fd_ref
;
int
fd_device
;
int
last_checked
;
__kernel_caddr_t32
dmabuf
;
compat_caddr_t
dmabuf
;
int
bufblocks
;
};
...
...
@@ -1413,7 +1413,7 @@ static int sg_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
}
struct
ppp_option_data32
{
__kernel_caddr_t32
ptr
;
compat_caddr_t
ptr
;
__u32
length
;
int
transmit
;
};
...
...
@@ -1494,8 +1494,8 @@ struct mtget32 {
__u32
mt_dsreg
;
__u32
mt_gstat
;
__u32
mt_erreg
;
__kernel_daddr_t32
mt_fileno
;
__kernel_daddr_t32
mt_blkno
;
compat_daddr_t
mt_fileno
;
compat_daddr_t
mt_blkno
;
};
#define MTIOCGET32 _IOR('m', 2, struct mtget32)
...
...
@@ -1613,7 +1613,7 @@ static int mt_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
struct
cdrom_read32
{
int
cdread_lba
;
__kernel_caddr_t32
cdread_bufaddr
;
compat_caddr_t
cdread_bufaddr
;
int
cdread_buflen
;
};
...
...
@@ -1621,16 +1621,16 @@ struct cdrom_read_audio32 {
union
cdrom_addr
addr
;
u_char
addr_format
;
int
nframes
;
__kernel_caddr_t32
buf
;
compat_caddr_t
buf
;
};
struct
cdrom_generic_command32
{
unsigned
char
cmd
[
CDROM_PACKET_SIZE
];
__kernel_caddr_t32
buffer
;
compat_caddr_t
buffer
;
unsigned
int
buflen
;
int
stat
;
__kernel_caddr_t32
sense
;
__kernel_caddr_t32
reserved
[
3
];
compat_caddr_t
sense
;
compat_caddr_t
reserved
[
3
];
};
static
int
cdrom_ioctl_trans
(
unsigned
int
fd
,
unsigned
int
cmd
,
unsigned
long
arg
)
...
...
@@ -1639,7 +1639,7 @@ static int cdrom_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long ar
struct
cdrom_read
cdread
;
struct
cdrom_read_audio
cdreadaudio
;
struct
cdrom_generic_command
cgc
;
__kernel_caddr_t32
addr
;
compat_caddr_t
addr
;
char
*
data
=
0
;
void
*
karg
;
int
err
=
0
;
...
...
@@ -1722,9 +1722,9 @@ out: if (data)
struct
loop_info32
{
int
lo_number
;
/* ioctl r/o */
__kernel_dev_t32
lo_device
;
/* ioctl r/o */
compat_dev_t
lo_device
;
/* ioctl r/o */
unsigned
int
lo_inode
;
/* ioctl r/o */
__kernel_dev_t32
lo_rdevice
;
/* ioctl r/o */
compat_dev_t
lo_rdevice
;
/* ioctl r/o */
int
lo_offset
;
int
lo_encrypt_type
;
int
lo_encrypt_key_size
;
/* ioctl w/o */
...
...
@@ -2054,7 +2054,7 @@ static int do_smb_getmountuid(unsigned int fd, unsigned int cmd, unsigned long a
set_fs
(
old_fs
);
if
(
err
>=
0
)
err
=
put_user
(
kuid
,
(
__kernel_uid_t32
*
)
arg
);
err
=
put_user
(
kuid
,
(
compat_uid_t
*
)
arg
);
return
err
;
}
...
...
@@ -2062,7 +2062,7 @@ static int do_smb_getmountuid(unsigned int fd, unsigned int cmd, unsigned long a
struct
ncp_ioctl_request_32
{
unsigned
int
function
;
unsigned
int
size
;
__kernel_caddr_t32
data
;
compat_caddr_t
data
;
};
struct
ncp_fs_info_v2_32
{
...
...
@@ -2083,13 +2083,13 @@ struct ncp_objectname_ioctl_32
{
int
auth_type
;
unsigned
int
object_name_len
;
__kernel_caddr_t32
object_name
;
/* an userspace data, in most cases user name */
compat_caddr_t
object_name
;
/* an userspace data, in most cases user name */
};
struct
ncp_privatedata_ioctl_32
{
unsigned
int
len
;
__kernel_caddr_t32
data
;
/* ~1000 for NDS */
compat_caddr_t
data
;
/* ~1000 for NDS */
};
#define NCP_IOC_NCPREQUEST_32 _IOR('n', 1, struct ncp_ioctl_request_32)
...
...
@@ -2362,12 +2362,12 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon
struct
atmif_sioc32
{
int
number
;
int
length
;
__kernel_caddr_t32
arg
;
compat_caddr_t
arg
;
};
struct
atm_iobuf32
{
int
length
;
__kernel_caddr_t32
buffer
;
compat_caddr_t
buffer
;
};
#define ATM_GETLINKRATE32 _IOW('a', ATMIOC_ITF+1, struct atmif_sioc32)
...
...
@@ -2428,7 +2428,7 @@ static int do_atm_iobuf(unsigned int fd, unsigned int cmd, unsigned long arg)
iobuf
.
length
=
iobuf32
.
length
;
if
(
iobuf32
.
buffer
==
(
__kernel_caddr_t32
)
NULL
||
iobuf32
.
length
==
0
)
{
if
(
iobuf32
.
buffer
==
(
compat_caddr_t
)
NULL
||
iobuf32
.
length
==
0
)
{
iobuf
.
buffer
=
(
void
*
)(
unsigned
long
)
iobuf32
.
buffer
;
}
else
{
iobuf
.
buffer
=
kmalloc
(
iobuf
.
length
,
GFP_KERNEL
);
...
...
@@ -2482,7 +2482,7 @@ static int do_atmif_sioc(unsigned int fd, unsigned int cmd, unsigned long arg)
sioc
.
number
=
sioc32
.
number
;
sioc
.
length
=
sioc32
.
length
;
if
(
sioc32
.
arg
==
(
__kernel_caddr_t32
)
NULL
||
sioc32
.
length
==
0
)
{
if
(
sioc32
.
arg
==
(
compat_caddr_t
)
NULL
||
sioc32
.
length
==
0
)
{
sioc
.
arg
=
(
void
*
)(
unsigned
long
)
sioc32
.
arg
;
}
else
{
sioc
.
arg
=
kmalloc
(
sioc
.
length
,
GFP_KERNEL
);
...
...
@@ -3656,7 +3656,7 @@ struct ioctl_trans {
#define HANDLE_IOCTL(cmd,handler) { cmd, (unsigned long)handler, 0 }
#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,unsigned int)
#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1,
__kernel_uid_t32
)
#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1,
compat_uid_t
)
static
struct
ioctl_trans
ioctl_translations
[]
=
{
/* List here explicitly which ioctl's need translation,
...
...
@@ -3708,11 +3708,6 @@ COMPATIBLE_IOCTL(TIOCSLTC),
COMPATIBLE_IOCTL
(
FBIOGET_VSCREENINFO
),
COMPATIBLE_IOCTL
(
FBIOPUT_VSCREENINFO
),
COMPATIBLE_IOCTL
(
FBIOPAN_DISPLAY
),
COMPATIBLE_IOCTL
(
FBIOGET_FCURSORINFO
),
COMPATIBLE_IOCTL
(
FBIOGET_VCURSORINFO
),
COMPATIBLE_IOCTL
(
FBIOPUT_VCURSORINFO
),
COMPATIBLE_IOCTL
(
FBIOGET_CURSORSTATE
),
COMPATIBLE_IOCTL
(
FBIOPUT_CURSORSTATE
),
COMPATIBLE_IOCTL
(
FBIOGET_CON2FBMAP
),
COMPATIBLE_IOCTL
(
FBIOPUT_CON2FBMAP
),
#if 0
...
...
@@ -3763,6 +3758,8 @@ COMPATIBLE_IOCTL(BLKRRPART),
COMPATIBLE_IOCTL
(
BLKFLSBUF
),
COMPATIBLE_IOCTL
(
BLKSECTSET
),
COMPATIBLE_IOCTL
(
BLKSSZGET
),
COMPATIBLE_IOCTL
(
BLKRASET
),
COMPATIBLE_IOCTL
(
BLKFRASET
),
/* RAID */
COMPATIBLE_IOCTL
(
RAID_VERSION
),
COMPATIBLE_IOCTL
(
GET_ARRAY_INFO
),
...
...
@@ -4350,6 +4347,8 @@ HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp),
HANDLE_IOCTL
(
HDIO_GETGEO
,
hdio_getgeo
),
HANDLE_IOCTL
(
HDIO_GETGEO_BIG_RAW
,
hdio_getgeo_big
),
HANDLE_IOCTL
(
BLKGETSIZE
,
w_long
),
HANDLE_IOCTL
(
BLKRAGET
,
w_long
),
HANDLE_IOCTL
(
BLKFRAGET
,
w_long
),
HANDLE_IOCTL
(
0x1260
,
broken_blkgetsize
),
HANDLE_IOCTL
(
BLKSECTGET
,
w_long
),
HANDLE_IOCTL
(
BLKPG
,
blkpg_ioctl_trans
),
...
...
arch/ppc64/kernel/irq.c
View file @
1e694d81
...
...
@@ -395,7 +395,7 @@ handle_irq_event(int irq, struct pt_regs *regs, struct irqaction *action)
}
#ifdef CONFIG_SMP
extern
unsigned
int
irq_affinity
[
NR_IRQS
];
extern
unsigned
long
irq_affinity
[
NR_IRQS
];
typedef
struct
{
unsigned
long
cpu
;
...
...
@@ -409,7 +409,7 @@ static irq_balance_t irq_balance[NR_IRQS] __cacheline_aligned
(idle_cpu(cpu) && ((now) - irq_stat[(cpu)].idle_timestamp > 1))
#define IRQ_ALLOWED(cpu,allowed_mask) \
((1 << cpu) & (allowed_mask))
((1
UL
<< cpu) & (allowed_mask))
#define IRQ_BALANCE_INTERVAL (HZ/50)
...
...
@@ -461,7 +461,7 @@ static inline void balance_irq(int irq)
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
,
1
<<
new_cpu
);
irq_desc
[
irq
].
handler
->
set_affinity
(
irq
,
1
UL
<<
new_cpu
);
}
}
}
...
...
@@ -649,19 +649,19 @@ static struct proc_dir_entry * irq_dir [NR_IRQS];
static
struct
proc_dir_entry
*
smp_affinity_entry
[
NR_IRQS
];
#ifdef CONFIG_IRQ_ALL_CPUS
unsigned
int
irq_affinity
[
NR_IRQS
]
=
{
[
0
...
NR_IRQS
-
1
]
=
0xffffffff
};
unsigned
long
irq_affinity
[
NR_IRQS
]
=
{
[
0
...
NR_IRQS
-
1
]
=
-
1UL
};
#else
/* CONFIG_IRQ_ALL_CPUS */
unsigned
int
irq_affinity
[
NR_IRQS
]
=
{
[
0
...
NR_IRQS
-
1
]
=
0x0000000
0
};
unsigned
long
irq_affinity
[
NR_IRQS
]
=
{
[
0
...
NR_IRQS
-
1
]
=
0x
0
};
#endif
/* CONFIG_IRQ_ALL_CPUS */
#define HEX_DIGITS
8
#define HEX_DIGITS
16
static
int
irq_affinity_read_proc
(
char
*
page
,
char
**
start
,
off_t
off
,
int
count
,
int
*
eof
,
void
*
data
)
{
if
(
count
<
HEX_DIGITS
+
1
)
return
-
EINVAL
;
return
sprintf
(
page
,
"%08x
\n
"
,
irq_affinity
[(
int
)
(
long
)
data
]);
return
sprintf
(
page
,
"%16lx
\n
"
,
irq_affinity
[
(
long
)
data
]);
}
static
unsigned
int
parse_hex_value
(
const
char
*
buffer
,
...
...
@@ -679,7 +679,7 @@ static unsigned int parse_hex_value (const char *buffer,
return
-
EFAULT
;
/*
* Parse the first
8
characters as a hex string, any non-hex char
* Parse the first
16
characters as a hex string, any non-hex char
* is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same.
*/
value
=
0
;
...
...
@@ -704,7 +704,7 @@ static unsigned int parse_hex_value (const char *buffer,
static
int
irq_affinity_write_proc
(
struct
file
*
file
,
const
char
*
buffer
,
unsigned
long
count
,
void
*
data
)
{
int
irq
=
(
int
)(
long
)
data
,
full_count
=
count
,
err
;
int
irq
=
(
long
)
data
,
full_count
=
count
,
err
;
unsigned
long
new_value
;
if
(
!
irq_desc
[
irq
].
handler
->
set_affinity
)
...
...
@@ -712,8 +712,6 @@ static int irq_affinity_write_proc (struct file *file, const char *buffer,
err
=
parse_hex_value
(
buffer
,
count
,
&
new_value
);
/* Why is this disabled ? --BenH */
#if 0/*CONFIG_SMP*/
/*
* Do not allow disabling IRQs completely - it's a too easy
* way to make the system unusable accidentally :-) At least
...
...
@@ -721,7 +719,6 @@ static int irq_affinity_write_proc (struct file *file, const char *buffer,
*/
if
(
!
(
new_value
&
cpu_online_map
))
return
-
EINVAL
;
#endif
irq_affinity
[
irq
]
=
new_value
;
irq_desc
[
irq
].
handler
->
set_affinity
(
irq
,
new_value
);
...
...
arch/ppc64/kernel/misc.S
View file @
1e694d81
...
...
@@ -398,46 +398,6 @@ _GLOBAL(_outsl_ns)
bdnz
00
b
blr
/*
*
Extended
precision
shifts
*
*
R3
/
R4
has
64
bit
value
*
R5
has
shift
count
*
result
in
R3
/
R4
*
*
ashrdi3
:
XXXYYY
/
ZZZAAA
->
SSSXXX
/
YYYZZZ
*
ashldi3
:
XXXYYY
/
ZZZAAA
->
YYYZZZ
/
AAA000
*
lshrdi3
:
XXXYYY
/
ZZZAAA
->
000
XXX
/
YYYZZZ
*/
/*
MIKEC
:
These
may
no
longer
be
needed
...
what
does
gcc
expect
?
*/
_GLOBAL
(
__ashrdi3
)
li
r6
,
32
sub
r6
,
r6
,
r5
slw
r7
,
r3
,
r6
/*
isolate
YYY
*/
srw
r4
,
r4
,
r5
/*
isolate
ZZZ
*/
or
r4
,
r4
,
r7
/*
YYYZZZ
*/
sraw
r3
,
r3
,
r5
/*
SSSXXX
*/
blr
_GLOBAL
(
__ashldi3
)
li
r6
,
32
sub
r6
,
r6
,
r5
srw
r7
,
r4
,
r6
/*
isolate
ZZZ
*/
slw
r4
,
r4
,
r5
/*
AAA000
*/
slw
r3
,
r3
,
r5
/*
YYY
---
*/
or
r3
,
r3
,
r7
/*
YYYZZZ
*/
blr
_GLOBAL
(
__lshrdi3
)
li
r6
,
32
sub
r6
,
r6
,
r5
slw
r7
,
r3
,
r6
/*
isolate
YYY
*/
srw
r4
,
r4
,
r5
/*
isolate
ZZZ
*/
or
r4
,
r4
,
r7
/*
YYYZZZ
*/
srw
r3
,
r3
,
r5
/*
000
XXX
*/
blr
_GLOBAL
(
abs
)
cmpi
0
,
r3
,
0
bge
10
f
...
...
@@ -551,7 +511,7 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_rmdir
/*
40
*/
.
llong
.
sys_dup
.
llong
.
sys_pipe
.
llong
.
sys32
_times
.
llong
.
compat_sys
_times
.
llong
.
sys_ni_syscall
/*
old
prof
syscall
*/
.
llong
.
sys_brk
/*
45
*/
.
llong
.
sys_setgid
...
...
@@ -614,9 +574,9 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys32_syslog
.
llong
.
compat_sys_setitimer
.
llong
.
compat_sys_getitimer
/*
105
*/
.
llong
.
sys32
_newstat
.
llong
.
sys32
_newlstat
.
llong
.
sys32
_newfstat
.
llong
.
compat_sys
_newstat
.
llong
.
compat_sys
_newlstat
.
llong
.
compat_sys
_newfstat
.
llong
.
sys_uname
.
llong
.
sys_ni_syscall
/*
110
old
iopl
syscall
*/
.
llong
.
sys_vhangup
...
...
arch/ppc64/kernel/pSeries_pci.c
View file @
1e694d81
...
...
@@ -40,7 +40,6 @@
#include <asm/naca.h>
#include <asm/pci_dma.h>
#include "xics.h"
#include "open_pic.h"
#include "pci.h"
...
...
@@ -402,7 +401,7 @@ alloc_phb(struct device_node *dev, char *model, unsigned int addr_size_words)
* Python
***************************************************************/
if
(
strstr
(
model
,
"Python"
))
{
unsigned
long
chip_regs
;
void
*
chip_regs
;
volatile
u32
*
tmp
,
i
;
PPCDBG
(
PPCDBG_PHBINIT
,
"
\t
Create python
\n
"
);
...
...
@@ -608,10 +607,6 @@ pSeries_pcibios_fixup(void)
pci_read_irq_line
(
dev
);
PPCDBGCALL
(
PPCDBG_PHBINIT
,
dumpPci_Dev
(
dev
)
);
}
if
(
naca
->
interrupt_controller
==
IC_PPC_XIC
)
{
xics_isa_init
();
}
}
/***********************************************************************
...
...
arch/ppc64/kernel/pci_dma.c
View file @
1e694d81
...
...
@@ -147,6 +147,7 @@ static unsigned long __inline__ count_leading_zeros64( unsigned long x )
return
lz
;
}
#ifdef CONFIG_PPC_ISERIES
static
void
tce_build_iSeries
(
struct
TceTable
*
tbl
,
long
tcenum
,
unsigned
long
uaddr
,
int
direction
)
{
...
...
@@ -180,7 +181,9 @@ static void tce_build_iSeries(struct TceTable *tbl, long tcenum,
panic
(
"PCI_DMA: HvCallXm_setTce failed, Rc: 0x%lx
\n
"
,
setTceRc
);
}
}
#endif
#ifdef CONFIG_PPC_PSERIES
static
void
tce_build_pSeries
(
struct
TceTable
*
tbl
,
long
tcenum
,
unsigned
long
uaddr
,
int
direction
)
{
...
...
@@ -199,8 +202,8 @@ static void tce_build_pSeries(struct TceTable *tbl, long tcenum,
tce_addr
=
((
union
Tce
*
)
tbl
->
base
)
+
tcenum
;
*
tce_addr
=
(
union
Tce
)
tce
.
wholeTce
;
}
#endif
/*
* Build a TceTable structure. This contains a multi-level bit map which
...
...
@@ -548,6 +551,7 @@ static inline dma_addr_t get_tces( struct TceTable *tbl, unsigned order, void *p
return
retTce
;
}
#ifdef CONFIG_PPC_ISERIES
static
void
tce_free_one_iSeries
(
struct
TceTable
*
tbl
,
long
tcenum
)
{
u64
set_tce_rc
;
...
...
@@ -560,7 +564,9 @@ static void tce_free_one_iSeries( struct TceTable *tbl, long tcenum )
panic
(
"PCI_DMA: HvCallXm_setTce failed, Rc: 0x%lx
\n
"
,
set_tce_rc
);
}
#endif
#ifdef CONFIG_PPC_PSERIES
static
void
tce_free_one_pSeries
(
struct
TceTable
*
tbl
,
long
tcenum
)
{
union
Tce
tce
;
...
...
@@ -572,6 +578,7 @@ static void tce_free_one_pSeries( struct TceTable *tbl, long tcenum )
*
tce_addr
=
(
union
Tce
)
tce
.
wholeTce
;
}
#endif
static
void
tce_free
(
struct
TceTable
*
tbl
,
dma_addr_t
dma_addr
,
unsigned
order
,
unsigned
num_pages
)
...
...
@@ -609,6 +616,7 @@ static void tce_free(struct TceTable *tbl, dma_addr_t dma_addr,
free_tce_range
(
tbl
,
free_tce
,
order
);
}
#ifdef CONFIG_PPC_ISERIES
void
__init
create_virtual_bus_tce_table
(
void
)
{
struct
TceTable
*
t
;
...
...
@@ -661,6 +669,7 @@ void __init create_virtual_bus_tce_table(void)
}
else
printk
(
"Virtual Bus VIO TCE table failed.
\n
"
);
}
#endif
void
create_tce_tables_for_buses
(
struct
list_head
*
bus_list
)
{
...
...
@@ -842,6 +851,7 @@ static struct TceTable* findHwTceTable(struct TceTable * newTceTable )
static
void
getTceTableParmsiSeries
(
struct
iSeries_Device_Node
*
DevNode
,
struct
TceTable
*
newTceTable
)
{
#ifdef CONFIG_PPC_ISERIES
struct
TceTableManagerCB
*
pciBusTceTableParms
=
(
struct
TceTableManagerCB
*
)
kmalloc
(
sizeof
(
struct
TceTableManagerCB
),
GFP_KERNEL
);
if
(
pciBusTceTableParms
==
NULL
)
panic
(
"PCI_DMA: TCE Table Allocation failed."
);
...
...
@@ -872,6 +882,7 @@ static void getTceTableParmsiSeries(struct iSeries_Device_Node* DevNode,
newTceTable
->
tceType
=
TCE_PCI
;
kfree
(
pciBusTceTableParms
);
#endif
}
static
void
getTceTableParmsPSeries
(
struct
pci_controller
*
phb
,
...
...
@@ -1440,15 +1451,19 @@ void pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems,
}
#endif
#ifdef CONFIG_PPC_PSERIES
/* These are called very early. */
void
tce_init_pSeries
(
void
)
{
ppc_md
.
tce_build
=
tce_build_pSeries
;
ppc_md
.
tce_free_one
=
tce_free_one_pSeries
;
}
#endif
#ifdef CONFIG_PPC_ISERIES
void
tce_init_iSeries
(
void
)
{
ppc_md
.
tce_build
=
tce_build_iSeries
;
ppc_md
.
tce_free_one
=
tce_free_one_iSeries
;
}
#endif
arch/ppc64/kernel/prom.c
View file @
1e694d81
This diff is collapsed.
Click to expand it.
arch/ppc64/kernel/rtc.c
View file @
1e694d81
...
...
@@ -258,6 +258,7 @@ static int rtc_read_proc(char *page, char **start, off_t off,
return
len
;
}
#ifdef CONFIG_PPC_ISERIES
/*
* Get the RTC from the virtual service processor
* This requires flowing LpEvents to the primary partition
...
...
@@ -271,60 +272,6 @@ void iSeries_get_rtc_time(struct rtc_time *rtc_tm)
rtc_tm
->
tm_mon
--
;
}
void
pSeries_get_rtc_time
(
struct
rtc_time
*
rtc_tm
)
{
unsigned
long
ret
[
8
];
int
error
;
int
count
;
/*
* error -2 is clock busy, we keep retrying a few times to see
* if it will come good -- paulus
*/
count
=
0
;
do
{
error
=
rtas_call
(
rtas_token
(
"get-time-of-day"
),
0
,
8
,
(
void
*
)
&
ret
);
}
while
(
error
==
-
2
&&
++
count
<
1000
);
if
(
error
!=
0
)
{
printk
(
KERN_WARNING
"error: reading the clock failed (%d)
\n
"
,
error
);
return
;
}
rtc_tm
->
tm_sec
=
ret
[
5
];
rtc_tm
->
tm_min
=
ret
[
4
];
rtc_tm
->
tm_hour
=
ret
[
3
];
rtc_tm
->
tm_mday
=
ret
[
2
];
rtc_tm
->
tm_mon
=
ret
[
1
]
-
1
;
rtc_tm
->
tm_year
=
ret
[
0
]
-
1900
;
}
int
pSeries_set_rtc_time
(
struct
rtc_time
*
tm
)
{
int
error
;
int
count
;
/*
* error -2 is clock busy, we keep retrying a few times to see
* if it will come good -- paulus
*/
count
=
0
;
do
{
error
=
rtas_call
(
rtas_token
(
"set-time-of-day"
),
7
,
1
,
NULL
,
tm
->
tm_year
+
1900
,
tm
->
tm_mon
+
1
,
tm
->
tm_mday
,
tm
->
tm_hour
,
tm
->
tm_min
,
tm
->
tm_sec
,
0
);
}
while
(
error
==
-
2
&&
++
count
<
1000
);
if
(
error
!=
0
)
printk
(
KERN_WARNING
"error: setting the clock failed (%d)
\n
"
,
error
);
return
0
;
}
/*
* Set the RTC in the virtual service processor
* This requires flowing LpEvents to the primary partition
...
...
@@ -380,3 +327,59 @@ void iSeries_get_boot_time(struct rtc_time *tm)
tm
->
tm_year
-=
1900
;
tm
->
tm_mon
-=
1
;
}
#endif
#ifdef CONFIG_PPC_PSERIES
void
pSeries_get_rtc_time
(
struct
rtc_time
*
rtc_tm
)
{
unsigned
long
ret
[
8
];
int
error
;
int
count
;
/*
* error -2 is clock busy, we keep retrying a few times to see
* if it will come good -- paulus
*/
count
=
0
;
do
{
error
=
rtas_call
(
rtas_token
(
"get-time-of-day"
),
0
,
8
,
(
void
*
)
&
ret
);
}
while
(
error
==
-
2
&&
++
count
<
1000
);
if
(
error
!=
0
)
{
printk
(
KERN_WARNING
"error: reading the clock failed (%d)
\n
"
,
error
);
return
;
}
rtc_tm
->
tm_sec
=
ret
[
5
];
rtc_tm
->
tm_min
=
ret
[
4
];
rtc_tm
->
tm_hour
=
ret
[
3
];
rtc_tm
->
tm_mday
=
ret
[
2
];
rtc_tm
->
tm_mon
=
ret
[
1
]
-
1
;
rtc_tm
->
tm_year
=
ret
[
0
]
-
1900
;
}
int
pSeries_set_rtc_time
(
struct
rtc_time
*
tm
)
{
int
error
;
int
count
;
/*
* error -2 is clock busy, we keep retrying a few times to see
* if it will come good -- paulus
*/
count
=
0
;
do
{
error
=
rtas_call
(
rtas_token
(
"set-time-of-day"
),
7
,
1
,
NULL
,
tm
->
tm_year
+
1900
,
tm
->
tm_mon
+
1
,
tm
->
tm_mday
,
tm
->
tm_hour
,
tm
->
tm_min
,
tm
->
tm_sec
,
0
);
}
while
(
error
==
-
2
&&
++
count
<
1000
);
if
(
error
!=
0
)
printk
(
KERN_WARNING
"error: setting the clock failed (%d)
\n
"
,
error
);
return
0
;
}
#endif
arch/ppc64/kernel/setup.c
View file @
1e694d81
...
...
@@ -153,14 +153,18 @@ void setup_system(unsigned long r3, unsigned long r4, unsigned long r5,
debugger_dabr_match
=
xmon_dabr_match
;
#endif
#ifdef CONFIG_PPC_ISERIES
/* pSeries systems are identified in prom.c via OF. */
if
(
itLpNaca
.
xLparInstalled
==
1
)
naca
->
platform
=
PLATFORM_ISERIES_LPAR
;
#endif
switch
(
naca
->
platform
)
{
#ifdef CONFIG_PPC_ISERIES
case
PLATFORM_ISERIES_LPAR
:
iSeries_init_early
();
break
;
#endif
#ifdef CONFIG_PPC_PSERIES
case
PLATFORM_PSERIES
:
...
...
@@ -215,9 +219,11 @@ void setup_system(unsigned long r3, unsigned long r4, unsigned long r5,
mm_init_ppc64
();
switch
(
naca
->
platform
)
{
#ifdef CONFIG_PPC_ISERIES
case
PLATFORM_ISERIES_LPAR
:
iSeries_init
();
break
;
#endif
default:
/* The following relies on the device tree being */
/* fully configured. */
...
...
arch/ppc64/kernel/smp.c
View file @
1e694d81
...
...
@@ -56,7 +56,7 @@ unsigned long cpu_online_map = 0;
static
struct
smp_ops_t
*
smp_ops
;
volatile
unsigned
long
cpu_callin_map
[
NR_CPUS
];
volatile
unsigned
int
cpu_callin_map
[
NR_CPUS
];
extern
unsigned
char
stab_array
[];
...
...
@@ -86,6 +86,7 @@ static inline void set_tb(unsigned int upper, unsigned int lower)
mttbl
(
lower
);
}
#ifdef CONFIG_PPC_ISERIES
void
iSeries_smp_message_recv
(
struct
pt_regs
*
regs
)
{
int
cpu
=
smp_processor_id
();
...
...
@@ -117,7 +118,6 @@ static void smp_iSeries_message_pass(int target, int msg, unsigned long data, in
}
}
#ifdef CONFIG_PPC_ISERIES
static
int
smp_iSeries_numProcs
(
void
)
{
unsigned
np
,
i
;
...
...
@@ -132,7 +132,6 @@ static int smp_iSeries_numProcs(void)
}
return
np
;
}
#endif
static
int
smp_iSeries_probe
(
void
)
{
...
...
@@ -189,13 +188,12 @@ void __init smp_init_iSeries(void)
smp_ops
->
probe
=
smp_iSeries_probe
;
smp_ops
->
kick_cpu
=
smp_iSeries_kick_cpu
;
smp_ops
->
setup_cpu
=
smp_iSeries_setup_cpu
;
#ifdef CONFIG_PPC_ISERIES
#warning fix for iseries
naca
->
processorCount
=
smp_iSeries_numProcs
();
#endif
}
#endif
#ifdef CONFIG_PPC_PSERIES
static
void
smp_openpic_message_pass
(
int
target
,
int
msg
,
unsigned
long
data
,
int
wait
)
{
...
...
@@ -257,6 +255,7 @@ smp_kick_cpu(int nr)
*/
paca
[
nr
].
xProcStart
=
1
;
}
#endif
static
void
__init
smp_space_timers
(
unsigned
int
max_cpus
)
{
...
...
@@ -273,6 +272,7 @@ static void __init smp_space_timers(unsigned int max_cpus)
}
}
#ifdef CONFIG_PPC_PSERIES
static
void
__devinit
pSeries_setup_cpu
(
int
cpu
)
{
if
(
OpenPIC_Addr
)
{
...
...
@@ -361,6 +361,7 @@ void __init smp_init_pSeries(void)
smp_ops
->
kick_cpu
=
smp_kick_cpu
;
smp_ops
->
setup_cpu
=
pSeries_setup_cpu
;
}
#endif
void
smp_local_timer_interrupt
(
struct
pt_regs
*
regs
)
{
...
...
@@ -563,26 +564,8 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
/* Fixup boot cpu */
smp_store_cpu_info
(
smp_processor_id
());
cpu_callin_map
[
smp_processor_id
()]
=
1
;
for
(
i
=
0
;
i
<
NR_CPUS
;
i
++
)
{
paca
[
i
].
prof_counter
=
1
;
paca
[
i
].
prof_multiplier
=
1
;
if
(
i
!=
boot_cpuid
)
{
void
*
tmp
;
/*
* the boot cpu segment table is statically
* initialized to real address 0x5000. The
* Other processor's tables are created and
* initialized here.
*/
tmp
=
&
stab_array
[
PAGE_SIZE
*
(
i
-
1
)];
memset
(
tmp
,
0
,
PAGE_SIZE
);
paca
[
i
].
xStab_data
.
virt
=
(
unsigned
long
)
tmp
;
paca
[
i
].
xStab_data
.
real
=
(
unsigned
long
)
__v2a
(
tmp
);
paca
[
i
].
default_decr
=
tb_ticks_per_jiffy
/
decr_overclock
;
}
}
paca
[
smp_processor_id
()].
prof_counter
=
1
;
paca
[
smp_processor_id
()].
prof_multiplier
=
1
;
/*
* XXX very rough.
...
...
@@ -616,6 +599,23 @@ int __devinit __cpu_up(unsigned int cpu)
struct
task_struct
*
p
;
int
c
;
paca
[
cpu
].
prof_counter
=
1
;
paca
[
cpu
].
prof_multiplier
=
1
;
paca
[
cpu
].
default_decr
=
tb_ticks_per_jiffy
/
decr_overclock
;
if
(
!
cpu_has_slb
())
{
void
*
tmp
;
/* maximum of 48 CPUs on machines with a segment table */
if
(
cpu
>=
48
)
BUG
();
tmp
=
&
stab_array
[
PAGE_SIZE
*
cpu
];
memset
(
tmp
,
0
,
PAGE_SIZE
);
paca
[
cpu
].
xStab_data
.
virt
=
(
unsigned
long
)
tmp
;
paca
[
cpu
].
xStab_data
.
real
=
(
unsigned
long
)
__v2a
(
tmp
);
}
/* create a process for the processor */
/* only regs.msr is actually used, and 0 is OK for it */
memset
(
&
regs
,
0
,
sizeof
(
struct
pt_regs
));
...
...
arch/ppc64/kernel/sys_ppc32.c
View file @
1e694d81
...
...
@@ -300,16 +300,16 @@ asmlinkage long sys32_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg
struct
ncp_mount_data32_v3
{
int
version
;
unsigned
int
ncp_fd
;
__kernel_uid_t32
mounted_uid
;
__kernel_pid_t32
wdog_pid
;
compat_uid_t
mounted_uid
;
compat_pid_t
wdog_pid
;
unsigned
char
mounted_vol
[
NCP_VOLNAME_LEN
+
1
];
unsigned
int
time_out
;
unsigned
int
retry_count
;
unsigned
int
flags
;
__kernel_uid_t32
uid
;
__kernel_gid_t32
gid
;
__kernel_mode_t32
file_mode
;
__kernel_mode_t32
dir_mode
;
compat_uid_t
uid
;
compat_gid_t
gid
;
compat_mode_t
file_mode
;
compat_mode_t
dir_mode
;
};
struct
ncp_mount_data32_v4
{
...
...
@@ -380,11 +380,11 @@ static void *do_ncp_super_data_conv(void *raw_data)
struct
smb_mount_data32
{
int
version
;
__kernel_uid_t32
mounted_uid
;
__kernel_uid_t32
uid
;
__kernel_gid_t32
gid
;
__kernel_mode_t32
file_mode
;
__kernel_mode_t32
dir_mode
;
compat_uid_t
mounted_uid
;
compat_uid_t
uid
;
compat_gid_t
gid
;
compat_mode_t
file_mode
;
compat_mode_t
dir_mode
;
};
static
void
*
do_smb_super_data_conv
(
void
*
raw_data
)
...
...
@@ -802,10 +802,13 @@ asmlinkage int ppc32_select(u32 n, u32* inp, u32* outp, u32* exp, u32 tvp_x)
return
sys32_select
((
int
)
n
,
inp
,
outp
,
exp
,
tvp_x
);
}
static
int
cp_new_stat32
(
struct
kstat
*
stat
,
struct
stat32
*
statbuf
)
int
cp_compat_stat
(
struct
kstat
*
stat
,
struct
compat_stat
*
statbuf
)
{
int
err
;
if
(
stat
->
size
>
MAX_NON_LFS
)
return
-
EOVERFLOW
;
err
=
put_user
(
stat
->
dev
,
&
statbuf
->
st_dev
);
err
|=
put_user
(
stat
->
ino
,
&
statbuf
->
st_ino
);
err
|=
put_user
(
stat
->
mode
,
&
statbuf
->
st_mode
);
...
...
@@ -813,8 +816,6 @@ static int cp_new_stat32(struct kstat *stat, struct stat32 *statbuf)
err
|=
put_user
(
stat
->
uid
,
&
statbuf
->
st_uid
);
err
|=
put_user
(
stat
->
gid
,
&
statbuf
->
st_gid
);
err
|=
put_user
(
stat
->
rdev
,
&
statbuf
->
st_rdev
);
if
(
stat
->
size
>
MAX_NON_LFS
)
return
-
EOVERFLOW
;
err
|=
put_user
(
stat
->
size
,
&
statbuf
->
st_size
);
err
|=
put_user
(
stat
->
atime
.
tv_sec
,
&
statbuf
->
st_atime
);
err
|=
put_user
(
0
,
&
statbuf
->
__unused1
);
...
...
@@ -830,39 +831,6 @@ static int cp_new_stat32(struct kstat *stat, struct stat32 *statbuf)
return
err
;
}
asmlinkage
long
sys32_newstat
(
char
*
filename
,
struct
stat32
*
statbuf
)
{
struct
kstat
stat
;
int
error
=
vfs_stat
(
filename
,
&
stat
);
if
(
!
error
)
error
=
cp_new_stat32
(
&
stat
,
statbuf
);
return
error
;
}
asmlinkage
long
sys32_newlstat
(
char
*
filename
,
struct
stat32
*
statbuf
)
{
struct
kstat
stat
;
int
error
=
vfs_lstat
(
filename
,
&
stat
);
if
(
!
error
)
error
=
cp_new_stat32
(
&
stat
,
statbuf
);
return
error
;
}
asmlinkage
long
sys32_newfstat
(
unsigned
int
fd
,
struct
stat32
*
statbuf
)
{
struct
kstat
stat
;
int
error
=
vfs_fstat
(
fd
,
&
stat
);
if
(
!
error
)
error
=
cp_new_stat32
(
&
stat
,
statbuf
);
return
error
;
}
static
inline
int
put_statfs
(
struct
statfs32
*
ubuf
,
struct
statfs
*
kbuf
)
{
int
err
;
...
...
@@ -1492,27 +1460,27 @@ struct nfsctl_client32 {
struct
nfsctl_export32
{
s8
ex32_client
[
NFSCLNT_IDMAX
+
1
];
s8
ex32_path
[
NFS_MAXPATHLEN
+
1
];
__kernel_dev_t32
ex32_dev
;
__kernel_ino_t32
ex32_ino
;
compat_dev_t
ex32_dev
;
compat_ino_t
ex32_ino
;
s32
ex32_flags
;
__kernel_uid_t32
ex32_anon_uid
;
__kernel_gid_t32
ex32_anon_gid
;
compat_uid_t
ex32_anon_uid
;
compat_gid_t
ex32_anon_gid
;
};
struct
nfsctl_uidmap32
{
u32
ug32_ident
;
/* char * */
__kernel_uid_t32
ug32_uidbase
;
compat_uid_t
ug32_uidbase
;
s32
ug32_uidlen
;
u32
ug32_udimap
;
/* uid_t * */
__kernel_uid_t32
ug32_gidbase
;
compat_uid_t
ug32_gidbase
;
s32
ug32_gidlen
;
u32
ug32_gdimap
;
/* gid_t * */
};
struct
nfsctl_fhparm32
{
struct
sockaddr
gf32_addr
;
__kernel_dev_t32
gf32_dev
;
__kernel_ino_t32
gf32_ino
;
compat_dev_t
gf32_dev
;
compat_ino_t
gf32_ino
;
s32
gf32_version
;
};
...
...
@@ -1645,7 +1613,7 @@ static int nfs_uud32_trans(struct nfsctl_arg *karg, struct nfsctl_arg32 *arg32)
return
-
ENOMEM
;
for
(
i
=
0
;
i
<
karg
->
ca_umap
.
ug_uidlen
;
i
++
)
err
|=
__get_user
(
karg
->
ca_umap
.
ug_udimap
[
i
],
&
(((
__kernel_uid_t32
*
)
A
(
uaddr
))[
i
]));
&
(((
compat_uid_t
*
)
A
(
uaddr
))[
i
]));
err
|=
__get_user
(
karg
->
ca_umap
.
ug_gidbase
,
&
arg32
->
ca32_umap
.
ug32_gidbase
);
err
|=
__get_user
(
karg
->
ca_umap
.
ug_uidlen
,
...
...
@@ -1659,7 +1627,7 @@ static int nfs_uud32_trans(struct nfsctl_arg *karg, struct nfsctl_arg32 *arg32)
return
-
ENOMEM
;
for
(
i
=
0
;
i
<
karg
->
ca_umap
.
ug_gidlen
;
i
++
)
err
|=
__get_user
(
karg
->
ca_umap
.
ug_gdimap
[
i
],
&
(((
__kernel_gid_t32
*
)
A
(
uaddr
))[
i
]));
&
(((
compat_gid_t
*
)
A
(
uaddr
))[
i
]));
return
err
;
}
...
...
@@ -2076,37 +2044,6 @@ asmlinkage long sys32_settimeofday(struct compat_timeval *tv, struct timezone *t
}
struct
tms32
{
__kernel_clock_t32
tms_utime
;
__kernel_clock_t32
tms_stime
;
__kernel_clock_t32
tms_cutime
;
__kernel_clock_t32
tms_cstime
;
};
extern
asmlinkage
long
sys_times
(
struct
tms
*
tbuf
);
asmlinkage
long
sys32_times
(
struct
tms32
*
tbuf
)
{
struct
tms
t
;
long
ret
;
mm_segment_t
old_fs
=
get_fs
();
int
err
;
set_fs
(
KERNEL_DS
);
ret
=
sys_times
(
tbuf
?
&
t
:
NULL
);
set_fs
(
old_fs
);
if
(
tbuf
)
{
err
=
put_user
(
t
.
tms_utime
,
&
tbuf
->
tms_utime
);
err
|=
__put_user
(
t
.
tms_stime
,
&
tbuf
->
tms_stime
);
err
|=
__put_user
(
t
.
tms_cutime
,
&
tbuf
->
tms_cutime
);
err
|=
__put_user
(
t
.
tms_cstime
,
&
tbuf
->
tms_cstime
);
if
(
err
)
ret
=
-
EFAULT
;
}
return
ret
;
}
struct
msgbuf32
{
s32
mtype
;
char
mtext
[
1
];
};
struct
semid_ds32
{
...
...
@@ -2144,8 +2081,8 @@ struct msqid_ds32
unsigned
short
msg_cbytes
;
unsigned
short
msg_qnum
;
unsigned
short
msg_qbytes
;
__kernel_ipc_pid_t32
msg_lspid
;
__kernel_ipc_pid_t32
msg_lrpid
;
compat_ipc_pid_t
msg_lspid
;
compat_ipc_pid_t
msg_lrpid
;
};
struct
msqid64_ds32
{
...
...
@@ -2159,8 +2096,8 @@ struct msqid64_ds32 {
unsigned
int
msg_cbytes
;
unsigned
int
msg_qnum
;
unsigned
int
msg_qbytes
;
__kernel_pid_t32
msg_lspid
;
__kernel_pid_t32
msg_lrpid
;
compat_pid_t
msg_lspid
;
compat_pid_t
msg_lrpid
;
unsigned
int
__unused4
;
unsigned
int
__unused5
;
};
...
...
@@ -2171,8 +2108,8 @@ struct shmid_ds32 {
compat_time_t
shm_atime
;
compat_time_t
shm_dtime
;
compat_time_t
shm_ctime
;
__kernel_ipc_pid_t32
shm_cpid
;
__kernel_ipc_pid_t32
shm_lpid
;
compat_ipc_pid_t
shm_cpid
;
compat_ipc_pid_t
shm_lpid
;
unsigned
short
shm_nattch
;
unsigned
short
__unused
;
unsigned
int
__unused2
;
...
...
@@ -2189,8 +2126,8 @@ struct shmid64_ds32 {
compat_time_t
shm_ctime
;
unsigned
int
__unused4
;
compat_size_t
shm_segsz
;
__kernel_pid_t32
shm_cpid
;
__kernel_pid_t32
shm_lpid
;
compat_pid_t
shm_cpid
;
compat_pid_t
shm_lpid
;
unsigned
int
shm_nattch
;
unsigned
int
__unused5
;
unsigned
int
__unused6
;
...
...
@@ -2712,7 +2649,7 @@ extern asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t* offset, siz
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_sendfile
(
u32
out_fd
,
u32
in_fd
,
__kernel_off_t32
*
offset
,
u32
count
)
asmlinkage
long
sys32_sendfile
(
u32
out_fd
,
u32
in_fd
,
compat_off_t
*
offset
,
u32
count
)
{
mm_segment_t
old_fs
=
get_fs
();
int
ret
;
...
...
@@ -2733,7 +2670,7 @@ asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, __kernel_off_t32* offset,
extern
asmlinkage
ssize_t
sys_sendfile64
(
int
out_fd
,
int
in_fd
,
loff_t
*
offset
,
size_t
count
);
asmlinkage
int
sys32_sendfile64
(
int
out_fd
,
int
in_fd
,
__kernel_loff_t32
*
offset
,
s32
count
)
asmlinkage
int
sys32_sendfile64
(
int
out_fd
,
int
in_fd
,
compat_loff_t
*
offset
,
s32
count
)
{
mm_segment_t
old_fs
=
get_fs
();
int
ret
;
...
...
@@ -4296,7 +4233,7 @@ asmlinkage long sys32_time(compat_time_t* tloc)
extern
asmlinkage
int
sys_sched_setaffinity
(
pid_t
pid
,
unsigned
int
len
,
unsigned
long
*
user_mask_ptr
);
asmlinkage
int
sys32_sched_setaffinity
(
__kernel_pid_t32
pid
,
unsigned
int
len
,
asmlinkage
int
sys32_sched_setaffinity
(
compat_pid_t
pid
,
unsigned
int
len
,
u32
*
user_mask_ptr
)
{
unsigned
long
kernel_mask
;
...
...
@@ -4320,7 +4257,7 @@ asmlinkage int sys32_sched_setaffinity(__kernel_pid_t32 pid, unsigned int len,
extern
asmlinkage
int
sys_sched_getaffinity
(
pid_t
pid
,
unsigned
int
len
,
unsigned
long
*
user_mask_ptr
);
asmlinkage
int
sys32_sched_getaffinity
(
__kernel_pid_t32
pid
,
unsigned
int
len
,
asmlinkage
int
sys32_sched_getaffinity
(
compat_pid_t
pid
,
unsigned
int
len
,
u32
*
user_mask_ptr
)
{
unsigned
long
kernel_mask
;
...
...
arch/ppc64/kernel/time.c
View file @
1e694d81
...
...
@@ -301,9 +301,11 @@ int timer_interrupt(struct pt_regs * regs)
next_dec
=
lpaca
->
default_decr
;
set_dec
(
next_dec
);
#ifdef CONFIG_PPC_ISERIES
lpq
=
lpaca
->
lpQueuePtr
;
if
(
lpq
&&
ItLpQueue_isLpIntPending
(
lpq
))
lpEvent_count
+=
ItLpQueue_process
(
lpq
,
regs
);
#endif
irq_exit
();
...
...
@@ -458,9 +460,11 @@ void __init time_init(void)
ppc_md
.
calibrate_decr
();
if
(
!
piranha_simulator
)
{
#ifdef CONFIG_PPC_ISERIES
if
(
!
piranha_simulator
)
#endif
ppc_md
.
get_boot_time
(
&
tm
);
}
write_lock_irqsave
(
&
xtime_lock
,
flags
);
xtime
.
tv_sec
=
mktime
(
tm
.
tm_year
+
1900
,
tm
.
tm_mon
+
1
,
tm
.
tm_mday
,
tm
.
tm_hour
,
tm
.
tm_min
,
tm
.
tm_sec
);
...
...
arch/ppc64/kernel/xics.c
View file @
1e694d81
...
...
@@ -22,7 +22,7 @@
#include <asm/naca.h>
#include <asm/rtas.h>
#include "i8259.h"
#include
"xics.h"
#include
<asm/xics.h>
#include <asm/ppcdebug.h>
#include <asm/machdep.h>
...
...
@@ -430,15 +430,6 @@ xics_init_IRQ( void )
ppc64_boot_msg
(
0x21
,
"XICS Done"
);
}
void
xics_isa_init
(
void
)
{
return
;
if
(
request_irq
(
xics_irq_8259_cascade
+
XICS_IRQ_OFFSET
,
no_action
,
0
,
"8259 cascade"
,
0
))
printk
(
KERN_ERR
"xics_init_IRQ: couldn't get 8259 cascade
\n
"
);
i8259_init
();
}
void
xics_set_affinity
(
unsigned
int
virq
,
unsigned
long
cpumask
)
{
irq_desc_t
*
desc
=
irq_desc
+
virq
;
...
...
@@ -446,7 +437,7 @@ void xics_set_affinity(unsigned int virq, unsigned long cpumask)
unsigned
long
flags
;
long
status
;
unsigned
long
xics_status
[
2
];
u
32
newmask
;
u
nsigned
long
newmask
;
virq
-=
XICS_IRQ_OFFSET
;
irq
=
virt_irq_to_real
(
virq
);
...
...
@@ -464,12 +455,12 @@ void xics_set_affinity(unsigned int virq, unsigned long cpumask)
}
/* For the moment only implement delivery to all cpus or one cpu */
if
(
cpumask
==
0xffffffff
)
{
if
(
cpumask
==
-
1UL
)
{
newmask
=
default_distrib_server
;
}
else
{
if
(
!
(
cpumask
&
cpu_online_map
))
goto
out
;
newmask
=
find_first_bit
(
&
cpumask
,
32
);
newmask
=
find_first_bit
(
&
cpumask
,
8
*
sizeof
(
unsigned
long
)
);
}
status
=
rtas_call
(
ibm_set_xive
,
3
,
1
,
NULL
,
...
...
arch/ppc64/lib/Makefile
View file @
1e694d81
...
...
@@ -2,7 +2,9 @@
# Makefile for ppc64-specific library files..
#
export-objs
:=
dec_and_lock.o
L_TARGET
=
lib.a
obj-y
:=
checksum.o dec_and_lock.o string.o strcase.o copypage.o
\
memcpy.o copyuser.o
export-objs
:=
dec_and_lock.o
obj-y
:=
checksum.o dec_and_lock.o string.o strcase.o
obj-y
+=
copypage.o memcpy.o copyuser.o
arch/ppc64/lib/memcpy.S
View file @
1e694d81
...
...
@@ -121,7 +121,7 @@ _GLOBAL(memcpy)
cmpwi
cr1
,
r5
,
8
addi
r3
,
r3
,
32
sld
r9
,
r9
,
r10
bl
t
cr1
,
.
Ldo_tail
bl
e
cr1
,
.
Ldo_tail
ld
r0
,
8
(
r4
)
srd
r7
,
r0
,
r11
or
r9
,
r7
,
r9
...
...
arch/ppc64/mm/Makefile
View file @
1e694d81
...
...
@@ -2,7 +2,7 @@
# Makefile for the linux ppc-specific parts of the memory manager.
#
EXTRA_CFLAGS
=
-mno-minimal-toc
EXTRA_CFLAGS
+
=
-mno-minimal-toc
obj-y
:=
fault.o init.o extable.o imalloc.o
obj-y
:=
fault.o init.o extable.o imalloc.o
obj-$(CONFIG_DISCONTIGMEM)
+=
numa.o
arch/ppc64/oprofile/Makefile
View file @
1e694d81
obj-$(CONFIG_OPROFILE)
+=
oprofile.o
DRIVER_OBJS
=
$(
addprefix
../../../drivers/oprofile/,
\
DRIVER_OBJS
:
=
$(
addprefix
../../../drivers/oprofile/,
\
oprof.o cpu_buffer.o buffer_sync.o
\
event_buffer.o oprofile_files.o
\
oprofilefs.o oprofile_stats.o
)
oprofile-y
:=
$(DRIVER_OBJS)
init.o timer_int.o
oprofile-y
:=
$(DRIVER_OBJS)
init.o timer_int.o
arch/ppc64/xmon/Makefile
View file @
1e694d81
# Makefile for xmon
EXTRA_CFLAGS
=
-mno-minimal-toc
EXTRA_CFLAGS
+
=
-mno-minimal-toc
obj-y
:=
start.o xmon.o ppc-dis.o ppc-opc.o subr_prf.o setjmp.o
obj-y
:=
start.o xmon.o ppc-dis.o ppc-opc.o subr_prf.o setjmp.o
arch/ppc64/xmon/start.c
View file @
1e694d81
...
...
@@ -14,29 +14,13 @@
#include <asm/page.h>
#include <asm/prom.h>
#include <asm/processor.h>
/* Transition to udbg isn't quite done yet...but very close. */
#define USE_UDBG
#ifdef USE_UDBG
#include <asm/udbg.h>
#endif
#ifndef USE_UDBG
static
volatile
unsigned
char
*
sccc
,
*
sccd
;
#endif
unsigned
long
TXRDY
,
RXRDY
;
extern
void
xmon_printf
(
const
char
*
fmt
,
...);
static
int
xmon_expect
(
const
char
*
str
,
unsigned
int
timeout
);
#ifndef USE_UDBG
static
int
console
=
0
;
#endif
static
int
via_modem
=
0
;
/* static int xmon_use_sccb = 0; --Unused */
#define TB_SPEED 25000000
extern
void
*
comport1
;
static
inline
unsigned
int
readtb
(
void
)
{
unsigned
int
ret
;
...
...
@@ -45,16 +29,10 @@ static inline unsigned int readtb(void)
return
ret
;
}
#ifndef USE_UDBG
void
buf_access
(
void
)
static
void
sysrq_handle_xmon
(
int
key
,
struct
pt_regs
*
pt_regs
,
struct
tty_struct
*
tty
)
{
sccd
[
3
]
&=
~
0x80
;
/* reset DLAB */
}
#endif
static
void
sysrq_handle_xmon
(
int
key
,
struct
pt_regs
*
pt_regs
,
struct
tty_struct
*
tty
)
{
xmon
(
pt_regs
);
xmon
(
pt_regs
);
}
static
struct
sysrq_key_op
sysrq_xmon_op
=
{
...
...
@@ -68,50 +46,12 @@ xmon_map_scc(void)
{
/* This maybe isn't the best place to register sysrq 'x' */
__sysrq_put_key_op
(
'x'
,
&
sysrq_xmon_op
);
#ifndef USE_UDBG
/* should already be mapped by the kernel boot */
sccd
=
(
volatile
unsigned
char
*
)
(((
unsigned
long
)
comport1
));
sccc
=
(
volatile
unsigned
char
*
)
(((
unsigned
long
)
comport1
)
+
5
);
TXRDY
=
0x20
;
RXRDY
=
1
;
#endif
}
static
int
scc_initialized
=
0
;
void
xmon_init_scc
(
void
);
extern
void
pmu_poll
(
void
);
int
xmon_write
(
void
*
handle
,
void
*
ptr
,
int
nb
)
{
#ifdef USE_UDBG
return
udbg_write
(
ptr
,
nb
);
#else
char
*
p
=
ptr
;
int
i
,
c
,
ct
;
if
(
!
scc_initialized
)
xmon_init_scc
();
ct
=
0
;
for
(
i
=
0
;
i
<
nb
;
++
i
)
{
while
((
*
sccc
&
TXRDY
)
==
0
)
{
}
c
=
p
[
i
];
if
(
c
==
'\n'
&&
!
ct
)
{
c
=
'\r'
;
ct
=
1
;
--
i
;
}
else
{
if
(
console
)
printk
(
"%c"
,
c
);
ct
=
0
;
}
buf_access
();
*
sccd
=
c
;
}
return
i
;
#endif
}
int
xmon_wants_key
;
...
...
@@ -119,68 +59,15 @@ int xmon_wants_key;
int
xmon_read
(
void
*
handle
,
void
*
ptr
,
int
nb
)
{
#ifdef USE_UDBG
return
udbg_read
(
ptr
,
nb
);
#else
char
*
p
=
ptr
;
int
i
,
c
;
if
(
!
scc_initialized
)
xmon_init_scc
();
for
(
i
=
0
;
i
<
nb
;
++
i
)
{
do
{
while
((
*
sccc
&
RXRDY
)
==
0
)
;
buf_access
();
c
=
*
sccd
;
}
while
(
c
==
0x11
||
c
==
0x13
);
*
p
++
=
c
;
}
return
i
;
#endif
}
int
xmon_read_poll
(
void
)
{
#ifdef USE_UDBG
return
udbg_getc_poll
();
#else
if
((
*
sccc
&
RXRDY
)
==
0
)
{
return
-
1
;
}
buf_access
();
return
*
sccd
;
#endif
}
void
xmon_init_scc
()
{
#ifndef USE_UDBG
sccd
[
3
]
=
0x83
;
eieio
();
/* LCR = 8N1 + DLAB */
sccd
[
0
]
=
12
;
eieio
();
/* DLL = 9600 baud */
sccd
[
1
]
=
0
;
eieio
();
sccd
[
2
]
=
0
;
eieio
();
/* FCR = 0 */
sccd
[
3
]
=
3
;
eieio
();
/* LCR = 8N1 */
sccd
[
1
]
=
0
;
eieio
();
/* IER = 0 */
#endif
scc_initialized
=
1
;
if
(
via_modem
)
{
for
(;;)
{
xmon_write
(
0
,
"ATE1V1
\r
"
,
7
);
if
(
xmon_expect
(
"OK"
,
5
))
{
xmon_write
(
0
,
"ATA
\r
"
,
4
);
if
(
xmon_expect
(
"CONNECT"
,
40
))
break
;
}
xmon_write
(
0
,
"+++"
,
3
);
xmon_expect
(
"OK"
,
3
);
}
}
}
void
*
xmon_stdin
;
void
*
xmon_stdout
;
void
*
xmon_stderr
;
...
...
include/asm-ppc64/compat.h
View file @
1e694d81
...
...
@@ -5,9 +5,25 @@
*/
#include <linux/types.h>
#define COMPAT_USER_HZ 100
typedef
u32
compat_size_t
;
typedef
s32
compat_ssize_t
;
typedef
s32
compat_time_t
;
typedef
s32
compat_clock_t
;
typedef
s32
compat_pid_t
;
typedef
u32
compat_uid_t
;
typedef
u32
compat_gid_t
;
typedef
u32
compat_mode_t
;
typedef
u32
compat_ino_t
;
typedef
u32
compat_dev_t
;
typedef
s32
compat_off_t
;
typedef
s64
compat_loff_t
;
typedef
s16
compat_nlink_t
;
typedef
u16
compat_ipc_pid_t
;
typedef
s32
compat_daddr_t
;
typedef
u32
compat_caddr_t
;
typedef
__kernel_fsid_t
compat_fsid_t
;
struct
compat_timespec
{
compat_time_t
tv_sec
;
...
...
@@ -19,4 +35,24 @@ struct compat_timeval {
s32
tv_usec
;
};
struct
compat_stat
{
compat_dev_t
st_dev
;
compat_ino_t
st_ino
;
compat_mode_t
st_mode
;
compat_nlink_t
st_nlink
;
compat_uid_t
st_uid
;
compat_gid_t
st_gid
;
compat_dev_t
st_rdev
;
compat_off_t
st_size
;
compat_off_t
st_blksize
;
compat_off_t
st_blocks
;
compat_time_t
st_atime
;
u32
__unused1
;
compat_time_t
st_mtime
;
u32
__unused2
;
compat_time_t
st_ctime
;
u32
__unused3
;
u32
__unused4
[
2
];
};
#endif
/* _ASM_PPC64_COMPAT_H */
include/asm-ppc64/page.h
View file @
1e694d81
...
...
@@ -48,7 +48,7 @@ static __inline__ void clear_page(void *addr)
lines
=
naca
->
dCacheL1LinesPerPage
;
__asm__
__volatile__
(
" mtctr %1
\n
\
"mtctr %1 # clear_page
\n
\
1: dcbz 0,%0
\n
\
add %0,%0,%3
\n
\
bdnz+ 1b"
...
...
include/asm-ppc64/pgtable.h
View file @
1e694d81
...
...
@@ -267,8 +267,8 @@ static inline unsigned long pte_update( pte_t *p, unsigned long clr,
{
unsigned
long
old
,
tmp
;
__asm__
__volatile__
(
"
\n
\
1: ldarx %0,0,%3
\n
\
__asm__
__volatile__
(
"1: ldarx %0,0,%3 # pte_update
\n
\
andc %1,%0,%4
\n
\
or %1,%1,%5
\n
\
stdcx. %1,0,%3
\n
\
...
...
include/asm-ppc64/ppc32.h
View file @
1e694d81
...
...
@@ -14,11 +14,6 @@
* 2 of the License, or (at your option) any later version.
*/
#ifndef __KERNEL_STRICT_NAMES
#include <linux/types.h>
typedef
__kernel_fsid_t
__kernel_fsid_t32
;
#endif
/* Use this to get at 32-bit user passed pointers. */
/* Things to consider: the low-level assembly stub does
srl x, 0, x for first four arguments, so if you have
...
...
@@ -44,21 +39,6 @@ typedef __kernel_fsid_t __kernel_fsid_t32;
})
/* These are here to support 32-bit syscalls on a 64-bit kernel. */
typedef
int
__kernel_ptrdiff_t32
;
typedef
int
__kernel_clock_t32
;
typedef
int
__kernel_pid_t32
;
typedef
unsigned
short
__kernel_ipc_pid_t32
;
typedef
unsigned
int
__kernel_uid_t32
;
typedef
unsigned
int
__kernel_gid_t32
;
typedef
unsigned
int
__kernel_dev_t32
;
typedef
unsigned
int
__kernel_ino_t32
;
typedef
unsigned
int
__kernel_mode_t32
;
typedef
unsigned
int
__kernel_umode_t32
;
typedef
short
__kernel_nlink_t32
;
typedef
int
__kernel_daddr_t32
;
typedef
int
__kernel_off_t32
;
typedef
unsigned
int
__kernel_caddr_t32
;
typedef
int
__kernel_loff_t32
;
struct
statfs32
{
int
f_type
;
...
...
@@ -68,7 +48,7 @@ struct statfs32 {
int
f_bavail
;
int
f_files
;
int
f_ffree
;
__kernel_fsid_t32
f_fsid
;
compat_fsid_t
f_fsid
;
int
f_namelen
;
/* SunOS ignores this field. */
int
f_spare
[
6
];
};
...
...
@@ -88,8 +68,8 @@ typedef struct siginfo32 {
/* kill() */
struct
{
__kernel_pid_t32
_pid
;
/* sender's pid */
__kernel_uid_t32
_uid
;
/* sender's uid */
compat_pid_t
_pid
;
/* sender's pid */
compat_uid_t
_uid
;
/* sender's uid */
}
_kill
;
/* POSIX.1b timers */
...
...
@@ -100,18 +80,18 @@ typedef struct siginfo32 {
/* POSIX.1b signals */
struct
{
__kernel_pid_t32
_pid
;
/* sender's pid */
__kernel_uid_t32
_uid
;
/* sender's uid */
compat_pid_t
_pid
;
/* sender's pid */
compat_uid_t
_uid
;
/* sender's uid */
sigval_t32
_sigval
;
}
_rt
;
/* SIGCHLD */
struct
{
__kernel_pid_t32
_pid
;
/* which child */
__kernel_uid_t32
_uid
;
/* sender's uid */
compat_pid_t
_pid
;
/* which child */
compat_uid_t
_uid
;
/* sender's uid */
int
_status
;
/* exit code */
__kernel_clock_t32
_utime
;
__kernel_clock_t32
_stime
;
compat_clock_t
_utime
;
compat_clock_t
_stime
;
}
_sigchld
;
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */
...
...
@@ -164,32 +144,12 @@ typedef struct sigaltstack_32 {
struct
flock32
{
short
l_type
;
short
l_whence
;
__kernel_off_t32
l_start
;
__kernel_off_t32
l_len
;
__kernel_pid_t32
l_pid
;
compat_off_t
l_start
;
compat_off_t
l_len
;
compat_pid_t
l_pid
;
short
__unused
;
};
struct
stat32
{
__kernel_dev_t32
st_dev
;
/* 2 */
__kernel_ino_t32
st_ino
;
/* 4 */
__kernel_mode_t32
st_mode
;
/* 2 */
short
st_nlink
;
/* 2 */
__kernel_uid_t32
st_uid
;
/* 2 */
__kernel_gid_t32
st_gid
;
/* 2 */
__kernel_dev_t32
st_rdev
;
/* 2 */
__kernel_off_t32
st_size
;
/* 4 */
__kernel_off_t32
st_blksize
;
/* 4 */
__kernel_off_t32
st_blocks
;
/* 4 */
compat_time_t
st_atime
;
/* 4 */
unsigned
int
__unused1
;
/* 4 */
compat_time_t
st_mtime
;
/* 4 */
unsigned
int
__unused2
;
/* 4 */
compat_time_t
st_ctime
;
/* 4 */
unsigned
int
__unused3
;
/* 4 */
unsigned
int
__unused4
[
2
];
/* 2*4 */
};
struct
sigcontext32
{
unsigned
int
_unused
[
4
];
int
signal
;
...
...
include/asm-ppc64/prom.h
View file @
1e694d81
...
...
@@ -155,12 +155,6 @@ struct prom_args {
prom_arg_t
*
rets
;
/* Pointer to return values in args[16]. */
};
typedef
struct
{
u32
printf
;
/* void (*printf)(char *, ...); */
u32
memdump
;
/* void (*memdump)(unsigned char *, unsigned long); */
u32
dummy
;
/* void (*dummy)(void); */
}
yaboot_debug_t
;
struct
prom_t
{
unsigned
long
entry
;
ihandle
chosen
;
...
...
@@ -171,9 +165,6 @@ struct prom_t {
unsigned
long
version
;
unsigned
long
encode_phys_size
;
struct
bi_record
*
bi_recs
;
#ifdef DEBUG_YABOOT
yaboot_debug_t
*
yaboot
;
#endif
};
extern
struct
prom_t
prom
;
...
...
@@ -183,7 +174,7 @@ extern int boot_cpuid;
/* Prototypes */
extern
void
abort
(
void
);
extern
unsigned
long
prom_init
(
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
yaboot_debug_t
*
);
unsigned
long
,
unsigned
long
);
extern
void
prom_print
(
const
char
*
msg
);
extern
void
relocate_nodes
(
void
);
extern
void
finish_device_tree
(
void
);
...
...
include/asm-ppc64/smp.h
View file @
1e694d81
...
...
@@ -52,7 +52,7 @@ static inline int num_online_cpus(void)
return
nr
;
}
extern
volatile
unsigned
long
cpu_callin_map
[
NR_CPUS
];
extern
volatile
unsigned
int
cpu_callin_map
[
NR_CPUS
];
#define smp_processor_id() (get_paca()->xPacaIndex)
...
...
include/asm-ppc64/tlb.h
View file @
1e694d81
...
...
@@ -62,7 +62,7 @@ static inline void __tlb_remove_tlb_entry(mmu_gather_t *tlb, pte_t *ptep,
if
(
i
==
PPC64_TLB_BATCH_NR
)
{
int
local
=
0
;
if
(
tlb
->
mm
->
cpu_vm_mask
==
(
1
<<
cpu
))
if
(
tlb
->
mm
->
cpu_vm_mask
==
(
1
UL
<<
cpu
))
local
=
1
;
flush_hash_range
(
tlb
->
mm
->
context
,
i
,
local
);
...
...
@@ -80,7 +80,7 @@ static inline void tlb_flush(struct free_pte_ctx *tlb)
struct
ppc64_tlb_batch
*
batch
=
&
ppc64_tlb_batch
[
cpu
];
int
local
=
0
;
if
(
tlb
->
mm
->
cpu_vm_mask
==
(
1
<<
smp_processor_id
()))
if
(
tlb
->
mm
->
cpu_vm_mask
==
(
1
UL
<<
smp_processor_id
()))
local
=
1
;
flush_hash_range
(
tlb
->
mm
->
context
,
batch
->
index
,
local
);
...
...
include/asm-ppc64/topology.h
View file @
1e694d81
...
...
@@ -41,7 +41,7 @@ static inline unsigned long __node_to_cpu_mask(int node)
for
(
cpu
=
0
;
cpu
<
NR_CPUS
;
cpu
++
)
if
(
numa_cpu_lookup_table
[
cpu
]
==
node
)
mask
|=
1
<<
cpu
;
mask
|=
1
UL
<<
cpu
;
return
mask
;
}
...
...
arch/ppc64/kernel
/xics.h
→
include/asm-ppc64
/xics.h
View file @
1e694d81
/*
* arch/ppc/kernel/xics.h
* arch/ppc
64
/kernel/xics.h
*
* Copyright 2000 IBM Corporation.
*
...
...
@@ -9,14 +9,10 @@
* 2 of the License, or (at your option) any later version.
*/
#ifndef _PPC_KERNEL_XICS_H
#define _PPC_KERNEL_XICS_H
extern
struct
hw_interrupt_type
xics_pic
;
extern
struct
hw_interrupt_type
xics_8259_pic
;
#ifndef _PPC64_KERNEL_XICS_H
#define _PPC64_KERNEL_XICS_H
void
xics_init_IRQ
(
void
);
int
xics_get_irq
(
struct
pt_regs
*
);
void
xics_isa_init
(
void
);
#endif
/* _PPC_KERNEL_XICS_H */
#endif
/* _PPC
64
_KERNEL_XICS_H */
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