mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
[PATCH] s390: cleanup Kconfig
Sanitize some s390 Kconfig options. We have ARCH_S390, ARCH_S390X, ARCH_S390_31, 64BIT, S390_SUPPORT and COMPAT. Replace these 6 options by S390, 64BIT and COMPAT. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9bbc8346fb
commit
347a8dc3b8
60 changed files with 183 additions and 208 deletions
|
@ -23,14 +23,14 @@ config GENERIC_BUST_SPINLOCK
|
||||||
|
|
||||||
mainmenu "Linux Kernel Configuration"
|
mainmenu "Linux Kernel Configuration"
|
||||||
|
|
||||||
config ARCH_S390
|
config S390
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config UID16
|
config UID16
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
depends on ARCH_S390X = 'n'
|
depends on !64BIT
|
||||||
|
|
||||||
source "init/Kconfig"
|
source "init/Kconfig"
|
||||||
|
|
||||||
|
@ -38,20 +38,12 @@ menu "Base setup"
|
||||||
|
|
||||||
comment "Processor type and features"
|
comment "Processor type and features"
|
||||||
|
|
||||||
config ARCH_S390X
|
config 64BIT
|
||||||
bool "64 bit kernel"
|
bool "64 bit kernel"
|
||||||
help
|
help
|
||||||
Select this option if you have a 64 bit IBM zSeries machine
|
Select this option if you have a 64 bit IBM zSeries machine
|
||||||
and want to use the 64 bit addressing mode.
|
and want to use the 64 bit addressing mode.
|
||||||
|
|
||||||
config 64BIT
|
|
||||||
def_bool ARCH_S390X
|
|
||||||
|
|
||||||
config ARCH_S390_31
|
|
||||||
bool
|
|
||||||
depends on ARCH_S390X = 'n'
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SMP
|
config SMP
|
||||||
bool "Symmetric multi-processing support"
|
bool "Symmetric multi-processing support"
|
||||||
---help---
|
---help---
|
||||||
|
@ -101,20 +93,15 @@ config MATHEMU
|
||||||
on older S/390 machines. Say Y unless you know your machine doesn't
|
on older S/390 machines. Say Y unless you know your machine doesn't
|
||||||
need this.
|
need this.
|
||||||
|
|
||||||
config S390_SUPPORT
|
config COMPAT
|
||||||
bool "Kernel support for 31 bit emulation"
|
bool "Kernel support for 31 bit emulation"
|
||||||
depends on ARCH_S390X
|
depends on 64BIT
|
||||||
help
|
help
|
||||||
Select this option if you want to enable your system kernel to
|
Select this option if you want to enable your system kernel to
|
||||||
handle system-calls from ELF binaries for 31 bit ESA. This option
|
handle system-calls from ELF binaries for 31 bit ESA. This option
|
||||||
(and some other stuff like libraries and such) is needed for
|
(and some other stuff like libraries and such) is needed for
|
||||||
executing 31 bit applications. It is safe to say "Y".
|
executing 31 bit applications. It is safe to say "Y".
|
||||||
|
|
||||||
config COMPAT
|
|
||||||
bool
|
|
||||||
depends on S390_SUPPORT
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SYSVIPC_COMPAT
|
config SYSVIPC_COMPAT
|
||||||
bool
|
bool
|
||||||
depends on COMPAT && SYSVIPC
|
depends on COMPAT && SYSVIPC
|
||||||
|
@ -122,7 +109,7 @@ config SYSVIPC_COMPAT
|
||||||
|
|
||||||
config BINFMT_ELF32
|
config BINFMT_ELF32
|
||||||
tristate "Kernel support for 31 bit ELF binaries"
|
tristate "Kernel support for 31 bit ELF binaries"
|
||||||
depends on S390_SUPPORT
|
depends on COMPAT
|
||||||
help
|
help
|
||||||
This allows you to run 32-bit Linux/ELF binaries on your zSeries
|
This allows you to run 32-bit Linux/ELF binaries on your zSeries
|
||||||
in 64 bit mode. Everybody wants this; say Y.
|
in 64 bit mode. Everybody wants this; say Y.
|
||||||
|
@ -135,7 +122,7 @@ choice
|
||||||
|
|
||||||
config MARCH_G5
|
config MARCH_G5
|
||||||
bool "S/390 model G5 and G6"
|
bool "S/390 model G5 and G6"
|
||||||
depends on ARCH_S390_31
|
depends on !64BIT
|
||||||
help
|
help
|
||||||
Select this to build a 31 bit kernel that works
|
Select this to build a 31 bit kernel that works
|
||||||
on all S/390 and zSeries machines.
|
on all S/390 and zSeries machines.
|
||||||
|
|
|
@ -13,16 +13,14 @@
|
||||||
# Copyright (C) 1994 by Linus Torvalds
|
# Copyright (C) 1994 by Linus Torvalds
|
||||||
#
|
#
|
||||||
|
|
||||||
ifdef CONFIG_ARCH_S390_31
|
ifndef CONFIG_64BIT
|
||||||
LDFLAGS := -m elf_s390
|
LDFLAGS := -m elf_s390
|
||||||
CFLAGS += -m31
|
CFLAGS += -m31
|
||||||
AFLAGS += -m31
|
AFLAGS += -m31
|
||||||
UTS_MACHINE := s390
|
UTS_MACHINE := s390
|
||||||
STACK_SIZE := 8192
|
STACK_SIZE := 8192
|
||||||
CHECKFLAGS += -D__s390__
|
CHECKFLAGS += -D__s390__
|
||||||
endif
|
else
|
||||||
|
|
||||||
ifdef CONFIG_ARCH_S390X
|
|
||||||
LDFLAGS := -m elf64_s390
|
LDFLAGS := -m elf64_s390
|
||||||
MODFLAGS += -fpic -D__PIC__
|
MODFLAGS += -fpic -D__PIC__
|
||||||
CFLAGS += -m64
|
CFLAGS += -m64
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#define TOD_MICRO 0x01000 /* nr. of TOD clock units
|
#define TOD_MICRO 0x01000 /* nr. of TOD clock units
|
||||||
for 1 microsecond */
|
for 1 microsecond */
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
|
|
||||||
#define APPLDATA_START_INTERVAL_REC 0x00 /* Function codes for */
|
#define APPLDATA_START_INTERVAL_REC 0x00 /* Function codes for */
|
||||||
#define APPLDATA_STOP_REC 0x01 /* DIAG 0xDC */
|
#define APPLDATA_STOP_REC 0x01 /* DIAG 0xDC */
|
||||||
|
@ -54,13 +54,13 @@
|
||||||
#define APPLDATA_GEN_EVENT_RECORD 0x82
|
#define APPLDATA_GEN_EVENT_RECORD 0x82
|
||||||
#define APPLDATA_START_CONFIG_REC 0x83
|
#define APPLDATA_START_CONFIG_REC 0x83
|
||||||
|
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameter list for DIAGNOSE X'DC'
|
* Parameter list for DIAGNOSE X'DC'
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
struct appldata_parameter_list {
|
struct appldata_parameter_list {
|
||||||
u16 diag; /* The DIAGNOSE code X'00DC' */
|
u16 diag; /* The DIAGNOSE code X'00DC' */
|
||||||
u8 function; /* The function code for the DIAGNOSE */
|
u8 function; /* The function code for the DIAGNOSE */
|
||||||
|
@ -82,7 +82,7 @@ struct appldata_parameter_list {
|
||||||
u64 product_id_addr;
|
u64 product_id_addr;
|
||||||
u64 buffer_addr;
|
u64 buffer_addr;
|
||||||
};
|
};
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* /proc entries (sysctl)
|
* /proc entries (sysctl)
|
||||||
|
|
|
@ -112,7 +112,7 @@ struct crypt_s390_query_status {
|
||||||
* [ret] is the variable to receive the error code
|
* [ret] is the variable to receive the error code
|
||||||
* [ERR] is the error code value
|
* [ERR] is the error code value
|
||||||
*/
|
*/
|
||||||
#ifndef __s390x__
|
#ifndef CONFIG_64BIT
|
||||||
#define __crypt_s390_fixup \
|
#define __crypt_s390_fixup \
|
||||||
".section .fixup,\"ax\" \n" \
|
".section .fixup,\"ax\" \n" \
|
||||||
"7: lhi %0,%h[e1] \n" \
|
"7: lhi %0,%h[e1] \n" \
|
||||||
|
@ -129,7 +129,7 @@ struct crypt_s390_query_status {
|
||||||
" .long 0b,7b \n" \
|
" .long 0b,7b \n" \
|
||||||
" .long 1b,8b \n" \
|
" .long 1b,8b \n" \
|
||||||
".previous"
|
".previous"
|
||||||
#else /* __s390x__ */
|
#else /* CONFIG_64BIT */
|
||||||
#define __crypt_s390_fixup \
|
#define __crypt_s390_fixup \
|
||||||
".section .fixup,\"ax\" \n" \
|
".section .fixup,\"ax\" \n" \
|
||||||
"7: lhi %0,%h[e1] \n" \
|
"7: lhi %0,%h[e1] \n" \
|
||||||
|
@ -142,7 +142,7 @@ struct crypt_s390_query_status {
|
||||||
" .quad 0b,7b \n" \
|
" .quad 0b,7b \n" \
|
||||||
" .quad 1b,8b \n" \
|
" .quad 1b,8b \n" \
|
||||||
".previous"
|
".previous"
|
||||||
#endif /* __s390x__ */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Standard code for setting the result of s390 crypto instructions.
|
* Standard code for setting the result of s390 crypto instructions.
|
||||||
|
@ -150,10 +150,10 @@ struct crypt_s390_query_status {
|
||||||
* [result]: the register containing the result (e.g. second operand length
|
* [result]: the register containing the result (e.g. second operand length
|
||||||
* to compute number of processed bytes].
|
* to compute number of processed bytes].
|
||||||
*/
|
*/
|
||||||
#ifndef __s390x__
|
#ifndef CONFIG_64BIT
|
||||||
#define __crypt_s390_set_result \
|
#define __crypt_s390_set_result \
|
||||||
" lr %0,%[result] \n"
|
" lr %0,%[result] \n"
|
||||||
#else /* __s390x__ */
|
#else /* CONFIG_64BIT */
|
||||||
#define __crypt_s390_set_result \
|
#define __crypt_s390_set_result \
|
||||||
" lgr %0,%[result] \n"
|
" lgr %0,%[result] \n"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_ARCH_S390=y
|
CONFIG_S390=y
|
||||||
CONFIG_UID16=y
|
CONFIG_UID16=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -89,9 +89,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
#
|
#
|
||||||
# Processor type and features
|
# Processor type and features
|
||||||
#
|
#
|
||||||
# CONFIG_ARCH_S390X is not set
|
|
||||||
# CONFIG_64BIT is not set
|
# CONFIG_64BIT is not set
|
||||||
CONFIG_ARCH_S390_31=y
|
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_NR_CPUS=32
|
CONFIG_NR_CPUS=32
|
||||||
CONFIG_HOTPLUG_CPU=y
|
CONFIG_HOTPLUG_CPU=y
|
||||||
|
|
|
@ -8,31 +8,26 @@ obj-y := bitmap.o traps.o time.o process.o \
|
||||||
setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
|
setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
|
||||||
semaphore.o s390_ext.o debug.o profile.o irq.o reipl_diag.o
|
semaphore.o s390_ext.o debug.o profile.o irq.o reipl_diag.o
|
||||||
|
|
||||||
|
obj-y += $(if $(CONFIG_64BIT),entry64.o,entry.o)
|
||||||
|
obj-y += $(if $(CONFIG_64BIT),reipl64.o,reipl.o)
|
||||||
|
|
||||||
extra-y += head.o init_task.o vmlinux.lds
|
extra-y += head.o init_task.o vmlinux.lds
|
||||||
|
|
||||||
obj-$(CONFIG_MODULES) += s390_ksyms.o module.o
|
obj-$(CONFIG_MODULES) += s390_ksyms.o module.o
|
||||||
obj-$(CONFIG_SMP) += smp.o
|
obj-$(CONFIG_SMP) += smp.o
|
||||||
|
|
||||||
obj-$(CONFIG_S390_SUPPORT) += compat_linux.o compat_signal.o \
|
obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \
|
||||||
compat_ioctl.o compat_wrapper.o \
|
compat_ioctl.o compat_wrapper.o \
|
||||||
compat_exec_domain.o
|
compat_exec_domain.o
|
||||||
obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o
|
obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o
|
||||||
|
|
||||||
obj-$(CONFIG_ARCH_S390_31) += entry.o reipl.o
|
|
||||||
obj-$(CONFIG_ARCH_S390X) += entry64.o reipl64.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_VIRT_TIMER) += vtime.o
|
obj-$(CONFIG_VIRT_TIMER) += vtime.o
|
||||||
|
|
||||||
# Kexec part
|
# Kexec part
|
||||||
S390_KEXEC_OBJS := machine_kexec.o crash.o
|
S390_KEXEC_OBJS := machine_kexec.o crash.o
|
||||||
ifeq ($(CONFIG_ARCH_S390X),y)
|
S390_KEXEC_OBJS += $(if $(CONFIG_64BIT),relocate_kernel64.o,relocate_kernel.o)
|
||||||
S390_KEXEC_OBJS += relocate_kernel64.o
|
|
||||||
else
|
|
||||||
S390_KEXEC_OBJS += relocate_kernel.o
|
|
||||||
endif
|
|
||||||
obj-$(CONFIG_KEXEC) += $(S390_KEXEC_OBJS)
|
obj-$(CONFIG_KEXEC) += $(S390_KEXEC_OBJS)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# This is just to get the dependencies...
|
# This is just to get the dependencies...
|
||||||
#
|
#
|
||||||
|
|
|
@ -39,7 +39,7 @@ int __cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
|
|
||||||
if (response != NULL && rlen > 0) {
|
if (response != NULL && rlen > 0) {
|
||||||
memset(response, 0, rlen);
|
memset(response, 0, rlen);
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile ( "lra 2,0(%2)\n"
|
asm volatile ( "lra 2,0(%2)\n"
|
||||||
"lr 4,%3\n"
|
"lr 4,%3\n"
|
||||||
"o 4,%6\n"
|
"o 4,%6\n"
|
||||||
|
@ -55,7 +55,7 @@ int __cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
: "a" (cpcmd_buf), "d" (cmdlen),
|
: "a" (cpcmd_buf), "d" (cmdlen),
|
||||||
"a" (response), "d" (rlen), "m" (mask)
|
"a" (response), "d" (rlen), "m" (mask)
|
||||||
: "cc", "2", "3", "4", "5" );
|
: "cc", "2", "3", "4", "5" );
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
asm volatile ( "lrag 2,0(%2)\n"
|
asm volatile ( "lrag 2,0(%2)\n"
|
||||||
"lgr 4,%3\n"
|
"lgr 4,%3\n"
|
||||||
"o 4,%6\n"
|
"o 4,%6\n"
|
||||||
|
@ -73,11 +73,11 @@ int __cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
: "a" (cpcmd_buf), "d" (cmdlen),
|
: "a" (cpcmd_buf), "d" (cmdlen),
|
||||||
"a" (response), "d" (rlen), "m" (mask)
|
"a" (response), "d" (rlen), "m" (mask)
|
||||||
: "cc", "2", "3", "4", "5" );
|
: "cc", "2", "3", "4", "5" );
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
EBCASC(response, rlen);
|
EBCASC(response, rlen);
|
||||||
} else {
|
} else {
|
||||||
return_len = 0;
|
return_len = 0;
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile ( "lra 2,0(%1)\n"
|
asm volatile ( "lra 2,0(%1)\n"
|
||||||
"lr 3,%2\n"
|
"lr 3,%2\n"
|
||||||
"diag 2,3,0x8\n"
|
"diag 2,3,0x8\n"
|
||||||
|
@ -85,7 +85,7 @@ int __cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
: "=d" (return_code)
|
: "=d" (return_code)
|
||||||
: "a" (cpcmd_buf), "d" (cmdlen)
|
: "a" (cpcmd_buf), "d" (cmdlen)
|
||||||
: "2", "3" );
|
: "2", "3" );
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
asm volatile ( "lrag 2,0(%1)\n"
|
asm volatile ( "lrag 2,0(%1)\n"
|
||||||
"lgr 3,%2\n"
|
"lgr 3,%2\n"
|
||||||
"sam31\n"
|
"sam31\n"
|
||||||
|
@ -95,7 +95,7 @@ int __cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
: "=d" (return_code)
|
: "=d" (return_code)
|
||||||
: "a" (cpcmd_buf), "d" (cmdlen)
|
: "a" (cpcmd_buf), "d" (cmdlen)
|
||||||
: "2", "3" );
|
: "2", "3" );
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&cpcmd_lock, flags);
|
spin_unlock_irqrestore(&cpcmd_lock, flags);
|
||||||
if (response_code != NULL)
|
if (response_code != NULL)
|
||||||
|
@ -105,7 +105,7 @@ int __cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
|
|
||||||
EXPORT_SYMBOL(__cpcmd);
|
EXPORT_SYMBOL(__cpcmd);
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
int cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
int cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
{
|
{
|
||||||
char *lowbuf;
|
char *lowbuf;
|
||||||
|
@ -129,4 +129,4 @@ int cpcmd(const char *cmd, char *response, int rlen, int *response_code)
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(cpcmd);
|
EXPORT_SYMBOL(cpcmd);
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
|
@ -213,7 +213,7 @@ sysc_nr_ok:
|
||||||
mvc SP_ARGS(8,%r15),SP_R7(%r15)
|
mvc SP_ARGS(8,%r15),SP_R7(%r15)
|
||||||
sysc_do_restart:
|
sysc_do_restart:
|
||||||
larl %r10,sys_call_table
|
larl %r10,sys_call_table
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
tm __TI_flags+5(%r9),(_TIF_31BIT>>16) # running in 31 bit mode ?
|
tm __TI_flags+5(%r9),(_TIF_31BIT>>16) # running in 31 bit mode ?
|
||||||
jno sysc_noemu
|
jno sysc_noemu
|
||||||
larl %r10,sys_call_table_emu # use 31 bit emulation system calls
|
larl %r10,sys_call_table_emu # use 31 bit emulation system calls
|
||||||
|
@ -361,7 +361,7 @@ sys_clone_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs
|
la %r2,SP_PTREGS(%r15) # load pt_regs
|
||||||
jg sys_clone # branch to sys_clone
|
jg sys_clone # branch to sys_clone
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_clone_glue:
|
sys32_clone_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs
|
la %r2,SP_PTREGS(%r15) # load pt_regs
|
||||||
jg sys32_clone # branch to sys32_clone
|
jg sys32_clone # branch to sys32_clone
|
||||||
|
@ -383,7 +383,7 @@ sys_execve_glue:
|
||||||
bnz 0(%r12) # it did fail -> store result in gpr2
|
bnz 0(%r12) # it did fail -> store result in gpr2
|
||||||
b 6(%r12) # SKIP STG 2,SP_R2(15) in
|
b 6(%r12) # SKIP STG 2,SP_R2(15) in
|
||||||
# system_call/sysc_tracesys
|
# system_call/sysc_tracesys
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_execve_glue:
|
sys32_execve_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs
|
la %r2,SP_PTREGS(%r15) # load pt_regs
|
||||||
lgr %r12,%r14 # save return address
|
lgr %r12,%r14 # save return address
|
||||||
|
@ -398,7 +398,7 @@ sys_sigreturn_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
||||||
jg sys_sigreturn # branch to sys_sigreturn
|
jg sys_sigreturn # branch to sys_sigreturn
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_sigreturn_glue:
|
sys32_sigreturn_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
||||||
jg sys32_sigreturn # branch to sys32_sigreturn
|
jg sys32_sigreturn # branch to sys32_sigreturn
|
||||||
|
@ -408,7 +408,7 @@ sys_rt_sigreturn_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
||||||
jg sys_rt_sigreturn # branch to sys_sigreturn
|
jg sys_rt_sigreturn # branch to sys_sigreturn
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_rt_sigreturn_glue:
|
sys32_rt_sigreturn_glue:
|
||||||
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
la %r2,SP_PTREGS(%r15) # load pt_regs as parameter
|
||||||
jg sys32_rt_sigreturn # branch to sys32_sigreturn
|
jg sys32_rt_sigreturn # branch to sys32_sigreturn
|
||||||
|
@ -429,7 +429,7 @@ sys_sigsuspend_glue:
|
||||||
la %r14,6(%r14) # skip store of return value
|
la %r14,6(%r14) # skip store of return value
|
||||||
jg sys_sigsuspend # branch to sys_sigsuspend
|
jg sys_sigsuspend # branch to sys_sigsuspend
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_sigsuspend_glue:
|
sys32_sigsuspend_glue:
|
||||||
llgfr %r4,%r4 # unsigned long
|
llgfr %r4,%r4 # unsigned long
|
||||||
lgr %r5,%r4 # move mask back
|
lgr %r5,%r4 # move mask back
|
||||||
|
@ -449,7 +449,7 @@ sys_rt_sigsuspend_glue:
|
||||||
la %r14,6(%r14) # skip store of return value
|
la %r14,6(%r14) # skip store of return value
|
||||||
jg sys_rt_sigsuspend # branch to sys_rt_sigsuspend
|
jg sys_rt_sigsuspend # branch to sys_rt_sigsuspend
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_rt_sigsuspend_glue:
|
sys32_rt_sigsuspend_glue:
|
||||||
llgfr %r3,%r3 # size_t
|
llgfr %r3,%r3 # size_t
|
||||||
lgr %r4,%r3 # move sigsetsize parameter
|
lgr %r4,%r3 # move sigsetsize parameter
|
||||||
|
@ -464,7 +464,7 @@ sys_sigaltstack_glue:
|
||||||
la %r4,SP_PTREGS(%r15) # load pt_regs as parameter
|
la %r4,SP_PTREGS(%r15) # load pt_regs as parameter
|
||||||
jg sys_sigaltstack # branch to sys_sigreturn
|
jg sys_sigaltstack # branch to sys_sigreturn
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
sys32_sigaltstack_glue:
|
sys32_sigaltstack_glue:
|
||||||
la %r4,SP_PTREGS(%r15) # load pt_regs as parameter
|
la %r4,SP_PTREGS(%r15) # load pt_regs as parameter
|
||||||
jg sys32_sigaltstack_wrapper # branch to sys_sigreturn
|
jg sys32_sigaltstack_wrapper # branch to sys_sigreturn
|
||||||
|
@ -1009,7 +1009,7 @@ sys_call_table:
|
||||||
#include "syscalls.S"
|
#include "syscalls.S"
|
||||||
#undef SYSCALL
|
#undef SYSCALL
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
|
|
||||||
#define SYSCALL(esa,esame,emu) .long emu
|
#define SYSCALL(esa,esame,emu) .long emu
|
||||||
.globl sys_call_table_emu
|
.globl sys_call_table_emu
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
#define ARCH_OFFSET 4
|
#define ARCH_OFFSET 4
|
||||||
#else
|
#else
|
||||||
#define ARCH_OFFSET 0
|
#define ARCH_OFFSET 0
|
||||||
|
@ -539,7 +539,7 @@ ipl_devno:
|
||||||
.word 0
|
.word 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
#include "head64.S"
|
#include "head64.S"
|
||||||
#else
|
#else
|
||||||
#include "head31.S"
|
#include "head31.S"
|
||||||
|
|
|
@ -37,11 +37,11 @@
|
||||||
#define DEBUGP(fmt , ...)
|
#define DEBUGP(fmt , ...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
#define PLT_ENTRY_SIZE 12
|
#define PLT_ENTRY_SIZE 12
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
#define PLT_ENTRY_SIZE 20
|
#define PLT_ENTRY_SIZE 20
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
void *module_alloc(unsigned long size)
|
void *module_alloc(unsigned long size)
|
||||||
{
|
{
|
||||||
|
@ -294,17 +294,17 @@ apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
|
||||||
unsigned int *ip;
|
unsigned int *ip;
|
||||||
ip = me->module_core + me->arch.plt_offset +
|
ip = me->module_core + me->arch.plt_offset +
|
||||||
info->plt_offset;
|
info->plt_offset;
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */
|
ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */
|
||||||
ip[1] = 0x100607f1;
|
ip[1] = 0x100607f1;
|
||||||
ip[2] = val;
|
ip[2] = val;
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
ip[0] = 0x0d10e310; /* basr 1,0; lg 1,10(1); br 1 */
|
ip[0] = 0x0d10e310; /* basr 1,0; lg 1,10(1); br 1 */
|
||||||
ip[1] = 0x100a0004;
|
ip[1] = 0x100a0004;
|
||||||
ip[2] = 0x07f10000;
|
ip[2] = 0x07f10000;
|
||||||
ip[3] = (unsigned int) (val >> 32);
|
ip[3] = (unsigned int) (val >> 32);
|
||||||
ip[4] = (unsigned int) val;
|
ip[4] = (unsigned int) val;
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
info->plt_initialized = 1;
|
info->plt_initialized = 1;
|
||||||
}
|
}
|
||||||
if (r_type == R_390_PLTOFF16 ||
|
if (r_type == R_390_PLTOFF16 ||
|
||||||
|
|
|
@ -235,7 +235,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
|
||||||
/* Save access registers to new thread structure. */
|
/* Save access registers to new thread structure. */
|
||||||
save_access_regs(&p->thread.acrs[0]);
|
save_access_regs(&p->thread.acrs[0]);
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* save fprs to current->thread.fp_regs to merge them with
|
* save fprs to current->thread.fp_regs to merge them with
|
||||||
* the emulated registers and then copy the result to the child.
|
* the emulated registers and then copy the result to the child.
|
||||||
|
@ -247,7 +247,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
|
||||||
/* Set a new TLS ? */
|
/* Set a new TLS ? */
|
||||||
if (clone_flags & CLONE_SETTLS)
|
if (clone_flags & CLONE_SETTLS)
|
||||||
p->thread.acrs[0] = regs->gprs[6];
|
p->thread.acrs[0] = regs->gprs[6];
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
/* Save the fpu registers to new thread structure. */
|
/* Save the fpu registers to new thread structure. */
|
||||||
save_fp_regs(&p->thread.fp_regs);
|
save_fp_regs(&p->thread.fp_regs);
|
||||||
p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _REGION_TABLE;
|
p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _REGION_TABLE;
|
||||||
|
@ -260,7 +260,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
|
||||||
p->thread.acrs[1] = (unsigned int) regs->gprs[6];
|
p->thread.acrs[1] = (unsigned int) regs->gprs[6];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
/* start new process with ar4 pointing to the correct address space */
|
/* start new process with ar4 pointing to the correct address space */
|
||||||
p->thread.mm_segment = get_fs();
|
p->thread.mm_segment = get_fs();
|
||||||
/* Don't copy debug registers */
|
/* Don't copy debug registers */
|
||||||
|
@ -339,16 +339,16 @@ out:
|
||||||
*/
|
*/
|
||||||
int dump_fpu (struct pt_regs * regs, s390_fp_regs *fpregs)
|
int dump_fpu (struct pt_regs * regs, s390_fp_regs *fpregs)
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* save fprs to current->thread.fp_regs to merge them with
|
* save fprs to current->thread.fp_regs to merge them with
|
||||||
* the emulated registers and then copy the result to the dump.
|
* the emulated registers and then copy the result to the dump.
|
||||||
*/
|
*/
|
||||||
save_fp_regs(¤t->thread.fp_regs);
|
save_fp_regs(¤t->thread.fp_regs);
|
||||||
memcpy(fpregs, ¤t->thread.fp_regs, sizeof(s390_fp_regs));
|
memcpy(fpregs, ¤t->thread.fp_regs, sizeof(s390_fp_regs));
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
save_fp_regs(fpregs);
|
save_fp_regs(fpregs);
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
#include "compat_ptrace.h"
|
#include "compat_ptrace.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ FixPerRegisters(struct task_struct *task)
|
||||||
|
|
||||||
if (per_info->single_step) {
|
if (per_info->single_step) {
|
||||||
per_info->control_regs.bits.starting_addr = 0;
|
per_info->control_regs.bits.starting_addr = 0;
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
if (test_thread_flag(TIF_31BIT))
|
if (test_thread_flag(TIF_31BIT))
|
||||||
per_info->control_regs.bits.ending_addr = 0x7fffffffUL;
|
per_info->control_regs.bits.ending_addr = 0x7fffffffUL;
|
||||||
else
|
else
|
||||||
|
@ -112,7 +112,7 @@ ptrace_disable(struct task_struct *child)
|
||||||
clear_single_step(child);
|
clear_single_step(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
# define __ADDR_MASK 3
|
# define __ADDR_MASK 3
|
||||||
#else
|
#else
|
||||||
# define __ADDR_MASK 7
|
# define __ADDR_MASK 7
|
||||||
|
@ -138,7 +138,7 @@ peek_user(struct task_struct *child, addr_t addr, addr_t data)
|
||||||
* an alignment of 4. Programmers from hell...
|
* an alignment of 4. Programmers from hell...
|
||||||
*/
|
*/
|
||||||
mask = __ADDR_MASK;
|
mask = __ADDR_MASK;
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
if (addr >= (addr_t) &dummy->regs.acrs &&
|
if (addr >= (addr_t) &dummy->regs.acrs &&
|
||||||
addr < (addr_t) &dummy->regs.orig_gpr2)
|
addr < (addr_t) &dummy->regs.orig_gpr2)
|
||||||
mask = 3;
|
mask = 3;
|
||||||
|
@ -160,7 +160,7 @@ peek_user(struct task_struct *child, addr_t addr, addr_t data)
|
||||||
* access registers are stored in the thread structure
|
* access registers are stored in the thread structure
|
||||||
*/
|
*/
|
||||||
offset = addr - (addr_t) &dummy->regs.acrs;
|
offset = addr - (addr_t) &dummy->regs.acrs;
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* Very special case: old & broken 64 bit gdb reading
|
* Very special case: old & broken 64 bit gdb reading
|
||||||
* from acrs[15]. Result is a 64 bit value. Read the
|
* from acrs[15]. Result is a 64 bit value. Read the
|
||||||
|
@ -218,7 +218,7 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data)
|
||||||
* an alignment of 4. Programmers from hell indeed...
|
* an alignment of 4. Programmers from hell indeed...
|
||||||
*/
|
*/
|
||||||
mask = __ADDR_MASK;
|
mask = __ADDR_MASK;
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
if (addr >= (addr_t) &dummy->regs.acrs &&
|
if (addr >= (addr_t) &dummy->regs.acrs &&
|
||||||
addr < (addr_t) &dummy->regs.orig_gpr2)
|
addr < (addr_t) &dummy->regs.orig_gpr2)
|
||||||
mask = 3;
|
mask = 3;
|
||||||
|
@ -231,13 +231,13 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data)
|
||||||
* psw and gprs are stored on the stack
|
* psw and gprs are stored on the stack
|
||||||
*/
|
*/
|
||||||
if (addr == (addr_t) &dummy->regs.psw.mask &&
|
if (addr == (addr_t) &dummy->regs.psw.mask &&
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
data != PSW_MASK_MERGE(PSW_USER32_BITS, data) &&
|
data != PSW_MASK_MERGE(PSW_USER32_BITS, data) &&
|
||||||
#endif
|
#endif
|
||||||
data != PSW_MASK_MERGE(PSW_USER_BITS, data))
|
data != PSW_MASK_MERGE(PSW_USER_BITS, data))
|
||||||
/* Invalid psw mask. */
|
/* Invalid psw mask. */
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
if (addr == (addr_t) &dummy->regs.psw.addr)
|
if (addr == (addr_t) &dummy->regs.psw.addr)
|
||||||
/* I'd like to reject addresses without the
|
/* I'd like to reject addresses without the
|
||||||
high order bit but older gdb's rely on it */
|
high order bit but older gdb's rely on it */
|
||||||
|
@ -250,7 +250,7 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data)
|
||||||
* access registers are stored in the thread structure
|
* access registers are stored in the thread structure
|
||||||
*/
|
*/
|
||||||
offset = addr - (addr_t) &dummy->regs.acrs;
|
offset = addr - (addr_t) &dummy->regs.acrs;
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* Very special case: old & broken 64 bit gdb writing
|
* Very special case: old & broken 64 bit gdb writing
|
||||||
* to acrs[15] with a 64 bit value. Ignore the lower
|
* to acrs[15] with a 64 bit value. Ignore the lower
|
||||||
|
@ -357,7 +357,7 @@ do_ptrace_normal(struct task_struct *child, long request, long addr, long data)
|
||||||
return ptrace_request(child, request, addr, data);
|
return ptrace_request(child, request, addr, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
/*
|
/*
|
||||||
* Now the fun part starts... a 31 bit program running in the
|
* Now the fun part starts... a 31 bit program running in the
|
||||||
* 31 bit emulation tracing another program. PTRACE_PEEKTEXT,
|
* 31 bit emulation tracing another program. PTRACE_PEEKTEXT,
|
||||||
|
@ -629,7 +629,7 @@ do_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||||
return peek_user(child, addr, data);
|
return peek_user(child, addr, data);
|
||||||
if (request == PTRACE_POKEUSR && addr == PT_IEEE_IP)
|
if (request == PTRACE_POKEUSR && addr == PT_IEEE_IP)
|
||||||
return poke_user(child, addr, data);
|
return poke_user(child, addr, data);
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
if (request == PTRACE_PEEKUSR &&
|
if (request == PTRACE_PEEKUSR &&
|
||||||
addr == PT32_IEEE_IP && test_thread_flag(TIF_31BIT))
|
addr == PT32_IEEE_IP && test_thread_flag(TIF_31BIT))
|
||||||
return peek_user_emu31(child, addr, data);
|
return peek_user_emu31(child, addr, data);
|
||||||
|
@ -695,7 +695,7 @@ do_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||||
|
|
||||||
/* Do requests that differ for 31/64 bit */
|
/* Do requests that differ for 31/64 bit */
|
||||||
default:
|
default:
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
if (test_thread_flag(TIF_31BIT))
|
if (test_thread_flag(TIF_31BIT))
|
||||||
return do_ptrace_emu31(child, request, addr, data);
|
return do_ptrace_emu31(child, request, addr, data);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,7 +26,7 @@ void reipl_diag(void)
|
||||||
" st %%r4,%0\n"
|
" st %%r4,%0\n"
|
||||||
" st %%r5,%1\n"
|
" st %%r5,%1\n"
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
" .align 8\n"
|
" .align 8\n"
|
||||||
" .quad 0b, 0b\n"
|
" .quad 0b, 0b\n"
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -427,7 +427,7 @@ setup_lowcore(void)
|
||||||
__alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0) + PAGE_SIZE;
|
__alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0) + PAGE_SIZE;
|
||||||
lc->current_task = (unsigned long) init_thread_union.thread_info.task;
|
lc->current_task = (unsigned long) init_thread_union.thread_info.task;
|
||||||
lc->thread_info = (unsigned long) &init_thread_union;
|
lc->thread_info = (unsigned long) &init_thread_union;
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
if (MACHINE_HAS_IEEE) {
|
if (MACHINE_HAS_IEEE) {
|
||||||
lc->extended_save_area_addr = (__u32)
|
lc->extended_save_area_addr = (__u32)
|
||||||
__alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0);
|
__alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0);
|
||||||
|
@ -562,21 +562,21 @@ setup_arch(char **cmdline_p)
|
||||||
/*
|
/*
|
||||||
* print what head.S has found out about the machine
|
* print what head.S has found out about the machine
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
printk((MACHINE_IS_VM) ?
|
printk((MACHINE_IS_VM) ?
|
||||||
"We are running under VM (31 bit mode)\n" :
|
"We are running under VM (31 bit mode)\n" :
|
||||||
"We are running native (31 bit mode)\n");
|
"We are running native (31 bit mode)\n");
|
||||||
printk((MACHINE_HAS_IEEE) ?
|
printk((MACHINE_HAS_IEEE) ?
|
||||||
"This machine has an IEEE fpu\n" :
|
"This machine has an IEEE fpu\n" :
|
||||||
"This machine has no IEEE fpu\n");
|
"This machine has no IEEE fpu\n");
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
printk((MACHINE_IS_VM) ?
|
printk((MACHINE_IS_VM) ?
|
||||||
"We are running under VM (64 bit mode)\n" :
|
"We are running under VM (64 bit mode)\n" :
|
||||||
"We are running native (64 bit mode)\n");
|
"We are running native (64 bit mode)\n");
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
ROOT_DEV = Root_RAM0;
|
ROOT_DEV = Root_RAM0;
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
memory_end = memory_size & ~0x400000UL; /* align memory end to 4MB */
|
memory_end = memory_size & ~0x400000UL; /* align memory end to 4MB */
|
||||||
/*
|
/*
|
||||||
* We need some free virtual space to be able to do vmalloc.
|
* We need some free virtual space to be able to do vmalloc.
|
||||||
|
@ -585,9 +585,9 @@ setup_arch(char **cmdline_p)
|
||||||
*/
|
*/
|
||||||
if (memory_end > 1920*1024*1024)
|
if (memory_end > 1920*1024*1024)
|
||||||
memory_end = 1920*1024*1024;
|
memory_end = 1920*1024*1024;
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
memory_end = memory_size & ~0x200000UL; /* detected in head.s */
|
memory_end = memory_size & ~0x200000UL; /* detected in head.s */
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
init_mm.start_code = PAGE_OFFSET;
|
init_mm.start_code = PAGE_OFFSET;
|
||||||
init_mm.end_code = (unsigned long) &_etext;
|
init_mm.end_code = (unsigned long) &_etext;
|
||||||
|
|
|
@ -501,7 +501,7 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset)
|
||||||
|
|
||||||
if (signr > 0) {
|
if (signr > 0) {
|
||||||
/* Whee! Actually deliver the signal. */
|
/* Whee! Actually deliver the signal. */
|
||||||
#ifdef CONFIG_S390_SUPPORT
|
#ifdef CONFIG_COMPAT
|
||||||
if (test_thread_flag(TIF_31BIT)) {
|
if (test_thread_flag(TIF_31BIT)) {
|
||||||
extern void handle_signal32(unsigned long sig,
|
extern void handle_signal32(unsigned long sig,
|
||||||
struct k_sigaction *ka,
|
struct k_sigaction *ka,
|
||||||
|
|
|
@ -402,7 +402,7 @@ static void smp_ext_bitcall_others(ec_bit_sig sig)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* this function sends a 'purge tlb' signal to another CPU.
|
* this function sends a 'purge tlb' signal to another CPU.
|
||||||
*/
|
*/
|
||||||
|
@ -416,7 +416,7 @@ void smp_ptlb_all(void)
|
||||||
on_each_cpu(smp_ptlb_callback, NULL, 0, 1);
|
on_each_cpu(smp_ptlb_callback, NULL, 0, 1);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(smp_ptlb_all);
|
EXPORT_SYMBOL(smp_ptlb_all);
|
||||||
#endif /* ! CONFIG_ARCH_S390X */
|
#endif /* ! CONFIG_64BIT */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this function sends a 'reschedule' IPI to another CPU.
|
* this function sends a 'reschedule' IPI to another CPU.
|
||||||
|
@ -783,7 +783,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
if (stack == 0ULL)
|
if (stack == 0ULL)
|
||||||
panic("smp_boot_cpus failed to allocate memory\n");
|
panic("smp_boot_cpus failed to allocate memory\n");
|
||||||
lowcore_ptr[i]->panic_stack = stack + (PAGE_SIZE);
|
lowcore_ptr[i]->panic_stack = stack + (PAGE_SIZE);
|
||||||
#ifndef __s390x__
|
#ifndef CONFIG_64BIT
|
||||||
if (MACHINE_HAS_IEEE) {
|
if (MACHINE_HAS_IEEE) {
|
||||||
lowcore_ptr[i]->extended_save_area_addr =
|
lowcore_ptr[i]->extended_save_area_addr =
|
||||||
(__u32) __get_free_pages(GFP_KERNEL,0);
|
(__u32) __get_free_pages(GFP_KERNEL,0);
|
||||||
|
@ -793,7 +793,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifndef __s390x__
|
#ifndef CONFIG_64BIT
|
||||||
if (MACHINE_HAS_IEEE)
|
if (MACHINE_HAS_IEEE)
|
||||||
ctl_set_bit(14, 29); /* enable extended save area */
|
ctl_set_bit(14, 29); /* enable extended save area */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,9 +26,7 @@
|
||||||
#include <linux/mman.h>
|
#include <linux/mman.h>
|
||||||
#include <linux/file.h>
|
#include <linux/file.h>
|
||||||
#include <linux/utsname.h>
|
#include <linux/utsname.h>
|
||||||
#ifdef CONFIG_ARCH_S390X
|
|
||||||
#include <linux/personality.h>
|
#include <linux/personality.h>
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
|
||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/ipc.h>
|
#include <asm/ipc.h>
|
||||||
|
@ -121,7 +119,7 @@ out:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
struct sel_arg_struct {
|
struct sel_arg_struct {
|
||||||
unsigned long n;
|
unsigned long n;
|
||||||
fd_set *inp, *outp, *exp;
|
fd_set *inp, *outp, *exp;
|
||||||
|
@ -138,7 +136,7 @@ asmlinkage long old_select(struct sel_arg_struct __user *arg)
|
||||||
return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
|
return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sys_ipc() is the de-multiplexer for the SysV IPC calls..
|
* sys_ipc() is the de-multiplexer for the SysV IPC calls..
|
||||||
|
@ -211,7 +209,7 @@ asmlinkage long sys_ipc(uint call, int first, unsigned long second,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
asmlinkage long s390x_newuname(struct new_utsname __user *name)
|
asmlinkage long s390x_newuname(struct new_utsname __user *name)
|
||||||
{
|
{
|
||||||
int ret = sys_newuname(name);
|
int ret = sys_newuname(name);
|
||||||
|
@ -235,12 +233,12 @@ asmlinkage long s390x_personality(unsigned long personality)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wrapper function for sys_fadvise64/fadvise64_64
|
* Wrapper function for sys_fadvise64/fadvise64_64
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
|
|
||||||
asmlinkage long
|
asmlinkage long
|
||||||
s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice)
|
s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice)
|
||||||
|
|
|
@ -67,13 +67,13 @@ extern pgm_check_handler_t do_monitor_call;
|
||||||
|
|
||||||
#define stack_pointer ({ void **sp; asm("la %0,0(15)" : "=&d" (sp)); sp; })
|
#define stack_pointer ({ void **sp; asm("la %0,0(15)" : "=&d" (sp)); sp; })
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
#define FOURLONG "%08lx %08lx %08lx %08lx\n"
|
#define FOURLONG "%08lx %08lx %08lx %08lx\n"
|
||||||
static int kstack_depth_to_print = 12;
|
static int kstack_depth_to_print = 12;
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
#define FOURLONG "%016lx %016lx %016lx %016lx\n"
|
#define FOURLONG "%016lx %016lx %016lx %016lx\n"
|
||||||
static int kstack_depth_to_print = 20;
|
static int kstack_depth_to_print = 20;
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For show_trace we have tree different stack to consider:
|
* For show_trace we have tree different stack to consider:
|
||||||
|
@ -702,12 +702,12 @@ void __init trap_init(void)
|
||||||
pgm_check_table[0x11] = &do_dat_exception;
|
pgm_check_table[0x11] = &do_dat_exception;
|
||||||
pgm_check_table[0x12] = &translation_exception;
|
pgm_check_table[0x12] = &translation_exception;
|
||||||
pgm_check_table[0x13] = &special_op_exception;
|
pgm_check_table[0x13] = &special_op_exception;
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
pgm_check_table[0x38] = &do_dat_exception;
|
pgm_check_table[0x38] = &do_dat_exception;
|
||||||
pgm_check_table[0x39] = &do_dat_exception;
|
pgm_check_table[0x39] = &do_dat_exception;
|
||||||
pgm_check_table[0x3A] = &do_dat_exception;
|
pgm_check_table[0x3A] = &do_dat_exception;
|
||||||
pgm_check_table[0x3B] = &do_dat_exception;
|
pgm_check_table[0x3B] = &do_dat_exception;
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
pgm_check_table[0x15] = &operand_exception;
|
pgm_check_table[0x15] = &operand_exception;
|
||||||
pgm_check_table[0x1C] = &space_switch_exception;
|
pgm_check_table[0x1C] = &space_switch_exception;
|
||||||
pgm_check_table[0x1D] = &hfp_sqrt_exception;
|
pgm_check_table[0x1D] = &hfp_sqrt_exception;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include <asm-generic/vmlinux.lds.h>
|
#include <asm-generic/vmlinux.lds.h>
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")
|
OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")
|
||||||
OUTPUT_ARCH(s390)
|
OUTPUT_ARCH(s390)
|
||||||
ENTRY(_start)
|
ENTRY(_start)
|
||||||
|
|
|
@ -4,6 +4,5 @@
|
||||||
|
|
||||||
EXTRA_AFLAGS := -traditional
|
EXTRA_AFLAGS := -traditional
|
||||||
|
|
||||||
lib-y += delay.o string.o
|
lib-y += delay.o string.o spinlock.o
|
||||||
lib-$(CONFIG_ARCH_S390_31) += uaccess.o spinlock.o
|
lib-y += $(if $(CONFIG_64BIT),uaccess64.o,uaccess.o)
|
||||||
lib-$(CONFIG_ARCH_S390X) += uaccess64.o spinlock.o
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ __setup("spin_retry=", spin_retry_setup);
|
||||||
static inline void
|
static inline void
|
||||||
_diag44(void)
|
_diag44(void)
|
||||||
{
|
{
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
if (MACHINE_HAS_DIAG44)
|
if (MACHINE_HAS_DIAG44)
|
||||||
#endif
|
#endif
|
||||||
asm volatile("diag 0,0,0x44");
|
asm volatile("diag 0,0,0x44");
|
||||||
|
|
|
@ -143,7 +143,7 @@ dcss_diag (__u8 func, void *parameter,
|
||||||
rx = (unsigned long) parameter;
|
rx = (unsigned long) parameter;
|
||||||
ry = (unsigned long) func;
|
ry = (unsigned long) func;
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
" sam31\n" // switch to 31 bit
|
" sam31\n" // switch to 31 bit
|
||||||
" diag %0,%1,0x64\n"
|
" diag %0,%1,0x64\n"
|
||||||
" sam64\n" // switch back to 64 bit
|
" sam64\n" // switch back to 64 bit
|
||||||
|
|
|
@ -31,17 +31,17 @@
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
#define __FAIL_ADDR_MASK 0x7ffff000
|
#define __FAIL_ADDR_MASK 0x7ffff000
|
||||||
#define __FIXUP_MASK 0x7fffffff
|
#define __FIXUP_MASK 0x7fffffff
|
||||||
#define __SUBCODE_MASK 0x0200
|
#define __SUBCODE_MASK 0x0200
|
||||||
#define __PF_RES_FIELD 0ULL
|
#define __PF_RES_FIELD 0ULL
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
#define __FAIL_ADDR_MASK -4096L
|
#define __FAIL_ADDR_MASK -4096L
|
||||||
#define __FIXUP_MASK ~0L
|
#define __FIXUP_MASK ~0L
|
||||||
#define __SUBCODE_MASK 0x0600
|
#define __SUBCODE_MASK 0x0600
|
||||||
#define __PF_RES_FIELD 0x8000000000000000ULL
|
#define __PF_RES_FIELD 0x8000000000000000ULL
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
#ifdef CONFIG_SYSCTL
|
||||||
extern int sysctl_userprocess_debug;
|
extern int sysctl_userprocess_debug;
|
||||||
|
@ -393,11 +393,11 @@ int pfault_init(void)
|
||||||
"2:\n"
|
"2:\n"
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
" .align 4\n"
|
" .align 4\n"
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
" .long 0b,1b\n"
|
" .long 0b,1b\n"
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
" .quad 0b,1b\n"
|
" .quad 0b,1b\n"
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
".previous"
|
".previous"
|
||||||
: "=d" (rc) : "a" (&refbk), "m" (refbk) : "cc" );
|
: "=d" (rc) : "a" (&refbk), "m" (refbk) : "cc" );
|
||||||
__ctl_set_bit(0, 9);
|
__ctl_set_bit(0, 9);
|
||||||
|
@ -417,11 +417,11 @@ void pfault_fini(void)
|
||||||
"0:\n"
|
"0:\n"
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
" .align 4\n"
|
" .align 4\n"
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
" .long 0b,0b\n"
|
" .long 0b,0b\n"
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
" .quad 0b,0b\n"
|
" .quad 0b,0b\n"
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
".previous"
|
".previous"
|
||||||
: : "a" (&refbk), "m" (refbk) : "cc" );
|
: : "a" (&refbk), "m" (refbk) : "cc" );
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ void diag10(unsigned long addr)
|
||||||
{
|
{
|
||||||
if (addr >= 0x7ff00000)
|
if (addr >= 0x7ff00000)
|
||||||
return;
|
return;
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
asm volatile (
|
asm volatile (
|
||||||
" sam31\n"
|
" sam31\n"
|
||||||
" diag %0,%0,0x10\n"
|
" diag %0,%0,0x10\n"
|
||||||
|
@ -106,7 +106,7 @@ extern unsigned long __initdata zholes_size[];
|
||||||
* paging_init() sets up the page tables
|
* paging_init() sets up the page tables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
void __init paging_init(void)
|
void __init paging_init(void)
|
||||||
{
|
{
|
||||||
pgd_t * pg_dir;
|
pgd_t * pg_dir;
|
||||||
|
@ -175,7 +175,7 @@ void __init paging_init(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
void __init paging_init(void)
|
void __init paging_init(void)
|
||||||
{
|
{
|
||||||
pgd_t * pg_dir;
|
pgd_t * pg_dir;
|
||||||
|
@ -256,7 +256,7 @@ void __init paging_init(void)
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
void __init mem_init(void)
|
void __init mem_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ static inline unsigned long mmap_base(void)
|
||||||
|
|
||||||
static inline int mmap_is_legacy(void)
|
static inline int mmap_is_legacy(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* Force standard allocation for 64 bit programs.
|
* Force standard allocation for 64 bit programs.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#for instance.
|
#for instance.
|
||||||
config LBD
|
config LBD
|
||||||
bool "Support for Large Block Devices"
|
bool "Support for Large Block Devices"
|
||||||
depends on X86 || (MIPS && 32BIT) || PPC32 || ARCH_S390_31 || SUPERH || UML
|
depends on X86 || (MIPS && 32BIT) || PPC32 || (S390 && !64BIT) || SUPERH || UML
|
||||||
help
|
help
|
||||||
Say Y here if you want to attach large (bigger than 2TB) discs to
|
Say Y here if you want to attach large (bigger than 2TB) discs to
|
||||||
your machine, or if you want to have a raid or loopback device
|
your machine, or if you want to have a raid or loopback device
|
||||||
|
|
|
@ -42,7 +42,7 @@ config CRYPTO_SHA1
|
||||||
|
|
||||||
config CRYPTO_SHA1_S390
|
config CRYPTO_SHA1_S390
|
||||||
tristate "SHA1 digest algorithm (s390)"
|
tristate "SHA1 digest algorithm (s390)"
|
||||||
depends on CRYPTO && ARCH_S390
|
depends on CRYPTO && S390
|
||||||
help
|
help
|
||||||
This is the s390 hardware accelerated implementation of the
|
This is the s390 hardware accelerated implementation of the
|
||||||
SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
|
SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
|
||||||
|
@ -58,7 +58,7 @@ config CRYPTO_SHA256
|
||||||
|
|
||||||
config CRYPTO_SHA256_S390
|
config CRYPTO_SHA256_S390
|
||||||
tristate "SHA256 digest algorithm (s390)"
|
tristate "SHA256 digest algorithm (s390)"
|
||||||
depends on CRYPTO && ARCH_S390
|
depends on CRYPTO && S390
|
||||||
help
|
help
|
||||||
This is the s390 hardware accelerated implementation of the
|
This is the s390 hardware accelerated implementation of the
|
||||||
SHA256 secure hash standard (DFIPS 180-2).
|
SHA256 secure hash standard (DFIPS 180-2).
|
||||||
|
@ -111,7 +111,7 @@ config CRYPTO_DES
|
||||||
|
|
||||||
config CRYPTO_DES_S390
|
config CRYPTO_DES_S390
|
||||||
tristate "DES and Triple DES cipher algorithms (s390)"
|
tristate "DES and Triple DES cipher algorithms (s390)"
|
||||||
depends on CRYPTO && ARCH_S390
|
depends on CRYPTO && S390
|
||||||
help
|
help
|
||||||
DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
|
DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ config CRYPTO_AES_X86_64
|
||||||
|
|
||||||
config CRYPTO_AES_S390
|
config CRYPTO_AES_S390
|
||||||
tristate "AES cipher algorithms (s390)"
|
tristate "AES cipher algorithms (s390)"
|
||||||
depends on CRYPTO && ARCH_S390
|
depends on CRYPTO && S390
|
||||||
help
|
help
|
||||||
This is the s390 hardware accelerated implementation of the
|
This is the s390 hardware accelerated implementation of the
|
||||||
AES cipher algorithms (FIPS-197). AES uses the Rijndael
|
AES cipher algorithms (FIPS-197). AES uses the Rijndael
|
||||||
|
|
|
@ -985,7 +985,7 @@ config HPET_MMAP
|
||||||
|
|
||||||
config HANGCHECK_TIMER
|
config HANGCHECK_TIMER
|
||||||
tristate "Hangcheck timer"
|
tristate "Hangcheck timer"
|
||||||
depends on X86 || IA64 || PPC64 || ARCH_S390
|
depends on X86 || IA64 || PPC64 || S390
|
||||||
help
|
help
|
||||||
The hangcheck-timer module detects when the system has gone
|
The hangcheck-timer module detects when the system has gone
|
||||||
out to lunch past a certain margin. It can reboot the system
|
out to lunch past a certain margin. It can reboot the system
|
||||||
|
|
|
@ -120,7 +120,7 @@ __setup("hcheck_dump_tasks", hangcheck_parse_dump_tasks);
|
||||||
#if defined(CONFIG_X86)
|
#if defined(CONFIG_X86)
|
||||||
# define HAVE_MONOTONIC
|
# define HAVE_MONOTONIC
|
||||||
# define TIMER_FREQ 1000000000ULL
|
# define TIMER_FREQ 1000000000ULL
|
||||||
#elif defined(CONFIG_ARCH_S390)
|
#elif defined(CONFIG_S390)
|
||||||
/* FA240000 is 1 Second in the IBM time universe (Page 4-38 Principles of Op for zSeries */
|
/* FA240000 is 1 Second in the IBM time universe (Page 4-38 Principles of Op for zSeries */
|
||||||
# define TIMER_FREQ 0xFA240000ULL
|
# define TIMER_FREQ 0xFA240000ULL
|
||||||
#elif defined(CONFIG_IA64)
|
#elif defined(CONFIG_IA64)
|
||||||
|
|
|
@ -438,7 +438,7 @@ config INDYDOG
|
||||||
|
|
||||||
config ZVM_WATCHDOG
|
config ZVM_WATCHDOG
|
||||||
tristate "z/VM Watchdog Timer"
|
tristate "z/VM Watchdog Timer"
|
||||||
depends on WATCHDOG && ARCH_S390
|
depends on WATCHDOG && S390
|
||||||
help
|
help
|
||||||
IBM s/390 and zSeries machines running under z/VM 5.1 or later
|
IBM s/390 and zSeries machines running under z/VM 5.1 or later
|
||||||
provide a virtual watchdog timer to their guest that cause a
|
provide a virtual watchdog timer to their guest that cause a
|
||||||
|
|
|
@ -157,7 +157,7 @@ struct input_event_compat {
|
||||||
# define COMPAT_TEST test_thread_flag(TIF_IA32)
|
# define COMPAT_TEST test_thread_flag(TIF_IA32)
|
||||||
#elif defined(CONFIG_IA64)
|
#elif defined(CONFIG_IA64)
|
||||||
# define COMPAT_TEST IS_IA32_PROCESS(ia64_task_regs(current))
|
# define COMPAT_TEST IS_IA32_PROCESS(ia64_task_regs(current))
|
||||||
#elif defined(CONFIG_ARCH_S390)
|
#elif defined(CONFIG_S390)
|
||||||
# define COMPAT_TEST test_thread_flag(TIF_31BIT)
|
# define COMPAT_TEST test_thread_flag(TIF_31BIT)
|
||||||
#elif defined(CONFIG_MIPS)
|
#elif defined(CONFIG_MIPS)
|
||||||
# define COMPAT_TEST (current->thread.mflags & MF_32BIT_ADDR)
|
# define COMPAT_TEST (current->thread.mflags & MF_32BIT_ADDR)
|
||||||
|
|
|
@ -6,7 +6,7 @@ menu "PHY device support"
|
||||||
|
|
||||||
config PHYLIB
|
config PHYLIB
|
||||||
tristate "PHY Device support and infrastructure"
|
tristate "PHY Device support and infrastructure"
|
||||||
depends on NET_ETHERNET && (BROKEN || !ARCH_S390)
|
depends on NET_ETHERNET && (BROKEN || !S390)
|
||||||
help
|
help
|
||||||
Ethernet controllers are usually attached to PHY
|
Ethernet controllers are usually attached to PHY
|
||||||
devices. This option provides infrastructure for
|
devices. This option provides infrastructure for
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
if ARCH_S390
|
if S390
|
||||||
|
|
||||||
comment "S/390 block device drivers"
|
comment "S/390 block device drivers"
|
||||||
depends on ARCH_S390
|
depends on S390
|
||||||
|
|
||||||
config BLK_DEV_XPRAM
|
config BLK_DEV_XPRAM
|
||||||
tristate "XPRAM disk support"
|
tristate "XPRAM disk support"
|
||||||
depends on ARCH_S390
|
depends on S390
|
||||||
help
|
help
|
||||||
Select this option if you want to use your expanded storage on S/390
|
Select this option if you want to use your expanded storage on S/390
|
||||||
or zSeries as a disk. This is useful as a _fast_ swap device if you
|
or zSeries as a disk. This is useful as a _fast_ swap device if you
|
||||||
|
@ -49,7 +49,7 @@ config DASD_FBA
|
||||||
|
|
||||||
config DASD_DIAG
|
config DASD_DIAG
|
||||||
tristate "Support for DIAG access to Disks"
|
tristate "Support for DIAG access to Disks"
|
||||||
depends on DASD && ( ARCH_S390X = 'n' || EXPERIMENTAL)
|
depends on DASD && ( 64BIT = 'n' || EXPERIMENTAL)
|
||||||
help
|
help
|
||||||
Select this option if you want to use Diagnose250 command to access
|
Select this option if you want to use Diagnose250 command to access
|
||||||
Disks under VM. If you are not running under VM or unsure what it is,
|
Disks under VM. If you are not running under VM or unsure what it is,
|
||||||
|
|
|
@ -604,7 +604,7 @@ dasd_smalloc_request(char *magic, int cplength, int datasize,
|
||||||
void
|
void
|
||||||
dasd_kfree_request(struct dasd_ccw_req * cqr, struct dasd_device * device)
|
dasd_kfree_request(struct dasd_ccw_req * cqr, struct dasd_device * device)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
struct ccw1 *ccw;
|
struct ccw1 *ccw;
|
||||||
|
|
||||||
/* Clear any idals used for the request. */
|
/* Clear any idals used for the request. */
|
||||||
|
|
|
@ -75,7 +75,7 @@ dia250(void *iob, int cmd)
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
" lghi %0,3\n"
|
" lghi %0,3\n"
|
||||||
" lgr 0,%3\n"
|
" lgr 0,%3\n"
|
||||||
" diag 0,%2,0x250\n"
|
" diag 0,%2,0x250\n"
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct dasd_diag_characteristics {
|
||||||
} __attribute__ ((packed, aligned(4)));
|
} __attribute__ ((packed, aligned(4)));
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
#define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
|
#define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
|
||||||
|
|
||||||
typedef u64 blocknum_t;
|
typedef u64 blocknum_t;
|
||||||
|
@ -86,7 +86,7 @@ struct dasd_diag_rw_io {
|
||||||
struct dasd_diag_bio *bio_list;
|
struct dasd_diag_bio *bio_list;
|
||||||
u8 spare4[8];
|
u8 spare4[8];
|
||||||
} __attribute__ ((packed, aligned(8)));
|
} __attribute__ ((packed, aligned(8)));
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
#define DASD_DIAG_FLAGA_DEFAULT 0x0
|
#define DASD_DIAG_FLAGA_DEFAULT 0x0
|
||||||
|
|
||||||
typedef u32 blocknum_t;
|
typedef u32 blocknum_t;
|
||||||
|
@ -125,4 +125,4 @@ struct dasd_diag_rw_io {
|
||||||
u32 interrupt_params;
|
u32 interrupt_params;
|
||||||
u8 spare3[20];
|
u8 spare3[20];
|
||||||
} __attribute__ ((packed, aligned(8)));
|
} __attribute__ ((packed, aligned(8)));
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
|
@ -1041,7 +1041,7 @@ dasd_eckd_build_cp(struct dasd_device * device, struct request *req)
|
||||||
/* Eckd can only do full blocks. */
|
/* Eckd can only do full blocks. */
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
count += bv->bv_len >> (device->s2b_shift + 9);
|
count += bv->bv_len >> (device->s2b_shift + 9);
|
||||||
#if defined(CONFIG_ARCH_S390X)
|
#if defined(CONFIG_64BIT)
|
||||||
if (idal_is_needed (page_address(bv->bv_page),
|
if (idal_is_needed (page_address(bv->bv_page),
|
||||||
bv->bv_len))
|
bv->bv_len))
|
||||||
cidaw += bv->bv_len >> (device->s2b_shift + 9);
|
cidaw += bv->bv_len >> (device->s2b_shift + 9);
|
||||||
|
|
|
@ -271,7 +271,7 @@ dasd_fba_build_cp(struct dasd_device * device, struct request *req)
|
||||||
/* Fba can only do full blocks. */
|
/* Fba can only do full blocks. */
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
count += bv->bv_len >> (device->s2b_shift + 9);
|
count += bv->bv_len >> (device->s2b_shift + 9);
|
||||||
#if defined(CONFIG_ARCH_S390X)
|
#if defined(CONFIG_64BIT)
|
||||||
if (idal_is_needed (page_address(bv->bv_page),
|
if (idal_is_needed (page_address(bv->bv_page),
|
||||||
bv->bv_len))
|
bv->bv_len))
|
||||||
cidaw += bv->bv_len / blksize;
|
cidaw += bv->bv_len / blksize;
|
||||||
|
|
|
@ -160,7 +160,7 @@ static int xpram_page_in (unsigned long page_addr, unsigned int xpage_index)
|
||||||
"0: ipm %0\n"
|
"0: ipm %0\n"
|
||||||
" srl %0,28\n"
|
" srl %0,28\n"
|
||||||
"1:\n"
|
"1:\n"
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
" .align 4\n"
|
" .align 4\n"
|
||||||
" .long 0b,1b\n"
|
" .long 0b,1b\n"
|
||||||
|
@ -208,7 +208,7 @@ static long xpram_page_out (unsigned long page_addr, unsigned int xpage_index)
|
||||||
"0: ipm %0\n"
|
"0: ipm %0\n"
|
||||||
" srl %0,28\n"
|
" srl %0,28\n"
|
||||||
"1:\n"
|
"1:\n"
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
" .align 4\n"
|
" .align 4\n"
|
||||||
" .long 0b,1b\n"
|
" .long 0b,1b\n"
|
||||||
|
|
|
@ -66,7 +66,7 @@ static int __diag288(enum vmwdt_func func, unsigned int timeout,
|
||||||
__cmdl = len;
|
__cmdl = len;
|
||||||
err = 0;
|
err = 0;
|
||||||
asm volatile (
|
asm volatile (
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
"diag %2,%4,0x288\n"
|
"diag %2,%4,0x288\n"
|
||||||
"1: \n"
|
"1: \n"
|
||||||
".section .fixup,\"ax\"\n"
|
".section .fixup,\"ax\"\n"
|
||||||
|
|
|
@ -195,7 +195,7 @@ cio_start_key (struct subchannel *sch, /* subchannel structure */
|
||||||
sch->orb.spnd = sch->options.suspend;
|
sch->orb.spnd = sch->options.suspend;
|
||||||
sch->orb.ssic = sch->options.suspend && sch->options.inter;
|
sch->orb.ssic = sch->options.suspend && sch->options.inter;
|
||||||
sch->orb.lpm = (lpm != 0) ? (lpm & sch->opm) : sch->lpm;
|
sch->orb.lpm = (lpm != 0) ? (lpm & sch->opm) : sch->lpm;
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* for 64 bit we always support 64 bit IDAWs with 4k page size only
|
* for 64 bit we always support 64 bit IDAWs with 4k page size only
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
/*
|
/*
|
||||||
* diag210 is used under VM to get information about a virtual device
|
* diag210 is used under VM to get information about a virtual device
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
int
|
int
|
||||||
diag210(struct diag210 * addr)
|
diag210(struct diag210 * addr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ static inline int stsch_err(struct subchannel_id schid,
|
||||||
"0: ipm %0\n"
|
"0: ipm %0\n"
|
||||||
" srl %0,28\n"
|
" srl %0,28\n"
|
||||||
"1:\n"
|
"1:\n"
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
" .align 8\n"
|
" .align 8\n"
|
||||||
" .quad 0b,1b\n"
|
" .quad 0b,1b\n"
|
||||||
|
@ -95,7 +95,7 @@ static inline int msch_err(struct subchannel_id schid,
|
||||||
"0: ipm %0\n"
|
"0: ipm %0\n"
|
||||||
" srl %0,28\n"
|
" srl %0,28\n"
|
||||||
"1:\n"
|
"1:\n"
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
".section __ex_table,\"a\"\n"
|
".section __ex_table,\"a\"\n"
|
||||||
" .align 8\n"
|
" .align 8\n"
|
||||||
" .quad 0b,1b\n"
|
" .quad 0b,1b\n"
|
||||||
|
|
|
@ -2394,7 +2394,7 @@ tiqdio_check_chsc_availability(void)
|
||||||
sprintf(dbf_text,"hydrati%1x", hydra_thinints);
|
sprintf(dbf_text,"hydrati%1x", hydra_thinints);
|
||||||
QDIO_DBF_TEXT0(0,setup,dbf_text);
|
QDIO_DBF_TEXT0(0,setup,dbf_text);
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
/* Check for QEBSM support in general (bit 58). */
|
/* Check for QEBSM support in general (bit 58). */
|
||||||
is_passthrough = css_general_characteristics.qebsm;
|
is_passthrough = css_general_characteristics.qebsm;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -271,7 +271,7 @@ static inline int
|
||||||
do_sqbs(unsigned long sch, unsigned char state, int queue,
|
do_sqbs(unsigned long sch, unsigned char state, int queue,
|
||||||
unsigned int *start, unsigned int *count)
|
unsigned int *start, unsigned int *count)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
register unsigned long _ccq asm ("0") = *count;
|
register unsigned long _ccq asm ("0") = *count;
|
||||||
register unsigned long _sch asm ("1") = sch;
|
register unsigned long _sch asm ("1") = sch;
|
||||||
unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
|
unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
|
||||||
|
@ -295,7 +295,7 @@ static inline int
|
||||||
do_eqbs(unsigned long sch, unsigned char *state, int queue,
|
do_eqbs(unsigned long sch, unsigned char *state, int queue,
|
||||||
unsigned int *start, unsigned int *count)
|
unsigned int *start, unsigned int *count)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
register unsigned long _ccq asm ("0") = *count;
|
register unsigned long _ccq asm ("0") = *count;
|
||||||
register unsigned long _sch asm ("1") = sch;
|
register unsigned long _sch asm ("1") = sch;
|
||||||
unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
|
unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
|
||||||
|
@ -323,7 +323,7 @@ do_siga_sync(struct subchannel_id schid, unsigned int mask1, unsigned int mask2)
|
||||||
{
|
{
|
||||||
int cc;
|
int cc;
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lhi 0,2 \n\t"
|
"lhi 0,2 \n\t"
|
||||||
"lr 1,%1 \n\t"
|
"lr 1,%1 \n\t"
|
||||||
|
@ -336,7 +336,7 @@ do_siga_sync(struct subchannel_id schid, unsigned int mask1, unsigned int mask2)
|
||||||
: "d" (schid), "d" (mask1), "d" (mask2)
|
: "d" (schid), "d" (mask1), "d" (mask2)
|
||||||
: "cc", "0", "1", "2", "3"
|
: "cc", "0", "1", "2", "3"
|
||||||
);
|
);
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lghi 0,2 \n\t"
|
"lghi 0,2 \n\t"
|
||||||
"llgfr 1,%1 \n\t"
|
"llgfr 1,%1 \n\t"
|
||||||
|
@ -349,7 +349,7 @@ do_siga_sync(struct subchannel_id schid, unsigned int mask1, unsigned int mask2)
|
||||||
: "d" (schid), "d" (mask1), "d" (mask2)
|
: "d" (schid), "d" (mask1), "d" (mask2)
|
||||||
: "cc", "0", "1", "2", "3"
|
: "cc", "0", "1", "2", "3"
|
||||||
);
|
);
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
return cc;
|
return cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ do_siga_input(struct subchannel_id schid, unsigned int mask)
|
||||||
{
|
{
|
||||||
int cc;
|
int cc;
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lhi 0,1 \n\t"
|
"lhi 0,1 \n\t"
|
||||||
"lr 1,%1 \n\t"
|
"lr 1,%1 \n\t"
|
||||||
|
@ -370,7 +370,7 @@ do_siga_input(struct subchannel_id schid, unsigned int mask)
|
||||||
: "d" (schid), "d" (mask)
|
: "d" (schid), "d" (mask)
|
||||||
: "cc", "0", "1", "2", "memory"
|
: "cc", "0", "1", "2", "memory"
|
||||||
);
|
);
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lghi 0,1 \n\t"
|
"lghi 0,1 \n\t"
|
||||||
"llgfr 1,%1 \n\t"
|
"llgfr 1,%1 \n\t"
|
||||||
|
@ -382,7 +382,7 @@ do_siga_input(struct subchannel_id schid, unsigned int mask)
|
||||||
: "d" (schid), "d" (mask)
|
: "d" (schid), "d" (mask)
|
||||||
: "cc", "0", "1", "2", "memory"
|
: "cc", "0", "1", "2", "memory"
|
||||||
);
|
);
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
return cc;
|
return cc;
|
||||||
}
|
}
|
||||||
|
@ -394,7 +394,7 @@ do_siga_output(unsigned long schid, unsigned long mask, __u32 *bb,
|
||||||
int cc;
|
int cc;
|
||||||
__u32 busy_bit;
|
__u32 busy_bit;
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lhi 0,0 \n\t"
|
"lhi 0,0 \n\t"
|
||||||
"lr 1,%2 \n\t"
|
"lr 1,%2 \n\t"
|
||||||
|
@ -424,7 +424,7 @@ do_siga_output(unsigned long schid, unsigned long mask, __u32 *bb,
|
||||||
"i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION)
|
"i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION)
|
||||||
: "cc", "0", "1", "2", "memory"
|
: "cc", "0", "1", "2", "memory"
|
||||||
);
|
);
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"llgfr 0,%5 \n\t"
|
"llgfr 0,%5 \n\t"
|
||||||
"lgr 1,%2 \n\t"
|
"lgr 1,%2 \n\t"
|
||||||
|
@ -449,7 +449,7 @@ do_siga_output(unsigned long schid, unsigned long mask, __u32 *bb,
|
||||||
"i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION), "d" (fc)
|
"i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION), "d" (fc)
|
||||||
: "cc", "0", "1", "2", "memory"
|
: "cc", "0", "1", "2", "memory"
|
||||||
);
|
);
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
(*bb) = busy_bit;
|
(*bb) = busy_bit;
|
||||||
return cc;
|
return cc;
|
||||||
|
@ -461,21 +461,21 @@ do_clear_global_summary(void)
|
||||||
|
|
||||||
unsigned long time;
|
unsigned long time;
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lhi 1,3 \n\t"
|
"lhi 1,3 \n\t"
|
||||||
".insn rre,0xb2650000,2,0 \n\t"
|
".insn rre,0xb2650000,2,0 \n\t"
|
||||||
"lr %0,3 \n\t"
|
"lr %0,3 \n\t"
|
||||||
: "=d" (time) : : "cc", "1", "2", "3"
|
: "=d" (time) : : "cc", "1", "2", "3"
|
||||||
);
|
);
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"lghi 1,3 \n\t"
|
"lghi 1,3 \n\t"
|
||||||
".insn rre,0xb2650000,2,0 \n\t"
|
".insn rre,0xb2650000,2,0 \n\t"
|
||||||
"lgr %0,3 \n\t"
|
"lgr %0,3 \n\t"
|
||||||
: "=d" (time) : : "cc", "1", "2", "3"
|
: "=d" (time) : : "cc", "1", "2", "3"
|
||||||
);
|
);
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
@ -542,11 +542,11 @@ struct qdio_perf_stats {
|
||||||
|
|
||||||
#define MY_MODULE_STRING(x) #x
|
#define MY_MODULE_STRING(x) #x
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390X
|
#ifdef CONFIG_64BIT
|
||||||
#define QDIO_GET_ADDR(x) ((__u32)(unsigned long)x)
|
#define QDIO_GET_ADDR(x) ((__u32)(unsigned long)x)
|
||||||
#else /* CONFIG_ARCH_S390X */
|
#else /* CONFIG_64BIT */
|
||||||
#define QDIO_GET_ADDR(x) ((__u32)(long)x)
|
#define QDIO_GET_ADDR(x) ((__u32)(long)x)
|
||||||
#endif /* CONFIG_ARCH_S390X */
|
#endif /* CONFIG_64BIT */
|
||||||
|
|
||||||
struct qdio_q {
|
struct qdio_q {
|
||||||
volatile struct slsb slsb;
|
volatile struct slsb slsb;
|
||||||
|
|
|
@ -785,7 +785,7 @@ testq(int q_nr, int *q_depth, int *dev_type, struct ap_status_word *stat)
|
||||||
int ccode;
|
int ccode;
|
||||||
|
|
||||||
asm volatile
|
asm volatile
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
(" llgfr 0,%4 \n"
|
(" llgfr 0,%4 \n"
|
||||||
" slgr 1,1 \n"
|
" slgr 1,1 \n"
|
||||||
" lgr 2,1 \n"
|
" lgr 2,1 \n"
|
||||||
|
@ -855,7 +855,7 @@ resetq(int q_nr, struct ap_status_word *stat_p)
|
||||||
int ccode;
|
int ccode;
|
||||||
|
|
||||||
asm volatile
|
asm volatile
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
(" llgfr 0,%2 \n"
|
(" llgfr 0,%2 \n"
|
||||||
" lghi 1,1 \n"
|
" lghi 1,1 \n"
|
||||||
" sll 1,24 \n"
|
" sll 1,24 \n"
|
||||||
|
@ -921,7 +921,7 @@ sen(int msg_len, unsigned char *msg_ext, struct ap_status_word *stat)
|
||||||
int ccode;
|
int ccode;
|
||||||
|
|
||||||
asm volatile
|
asm volatile
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
(" lgr 6,%3 \n"
|
(" lgr 6,%3 \n"
|
||||||
" llgfr 7,%2 \n"
|
" llgfr 7,%2 \n"
|
||||||
" llgt 0,0(6) \n"
|
" llgt 0,0(6) \n"
|
||||||
|
@ -1000,7 +1000,7 @@ rec(int q_nr, int buff_l, unsigned char *rsp, unsigned char *id,
|
||||||
int ccode;
|
int ccode;
|
||||||
|
|
||||||
asm volatile
|
asm volatile
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
(" llgfr 0,%2 \n"
|
(" llgfr 0,%2 \n"
|
||||||
" lgr 3,%4 \n"
|
" lgr 3,%4 \n"
|
||||||
" lgr 6,%3 \n"
|
" lgr 6,%3 \n"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
menu "S/390 network device drivers"
|
menu "S/390 network device drivers"
|
||||||
depends on NETDEVICES && ARCH_S390
|
depends on NETDEVICES && S390
|
||||||
|
|
||||||
config LCS
|
config LCS
|
||||||
tristate "Lan Channel Station Interface"
|
tristate "Lan Channel Station Interface"
|
||||||
|
|
|
@ -1603,7 +1603,7 @@ dumpit(char* buf, int len)
|
||||||
__u32 ct, sw, rm, dup;
|
__u32 ct, sw, rm, dup;
|
||||||
char *ptr, *rptr;
|
char *ptr, *rptr;
|
||||||
char tbuf[82], tdup[82];
|
char tbuf[82], tdup[82];
|
||||||
#if (CONFIG_ARCH_S390X)
|
#if (CONFIG_64BIT)
|
||||||
char addr[22];
|
char addr[22];
|
||||||
#else
|
#else
|
||||||
char addr[12];
|
char addr[12];
|
||||||
|
@ -1619,7 +1619,7 @@ dumpit(char* buf, int len)
|
||||||
dup = 0;
|
dup = 0;
|
||||||
for ( ct=0; ct < len; ct++, ptr++, rptr++ ) {
|
for ( ct=0; ct < len; ct++, ptr++, rptr++ ) {
|
||||||
if (sw == 0) {
|
if (sw == 0) {
|
||||||
#if (CONFIG_ARCH_S390X)
|
#if (CONFIG_64BIT)
|
||||||
sprintf(addr, "%16.16lX",(unsigned long)rptr);
|
sprintf(addr, "%16.16lX",(unsigned long)rptr);
|
||||||
#else
|
#else
|
||||||
sprintf(addr, "%8.8X",(__u32)rptr);
|
sprintf(addr, "%8.8X",(__u32)rptr);
|
||||||
|
@ -1634,7 +1634,7 @@ dumpit(char* buf, int len)
|
||||||
if (sw == 8) {
|
if (sw == 8) {
|
||||||
strcat(bhex, " ");
|
strcat(bhex, " ");
|
||||||
}
|
}
|
||||||
#if (CONFIG_ARCH_S390X)
|
#if (CONFIG_64BIT)
|
||||||
sprintf(tbuf,"%2.2lX", (unsigned long)*ptr);
|
sprintf(tbuf,"%2.2lX", (unsigned long)*ptr);
|
||||||
#else
|
#else
|
||||||
sprintf(tbuf,"%2.2X", (__u32)*ptr);
|
sprintf(tbuf,"%2.2X", (__u32)*ptr);
|
||||||
|
|
|
@ -246,7 +246,7 @@ s390_revalidate_registers(struct mci *mci)
|
||||||
*/
|
*/
|
||||||
kill_task = 1;
|
kill_task = 1;
|
||||||
|
|
||||||
#ifndef __s390x__
|
#ifndef CONFIG_64BIT
|
||||||
asm volatile("ld 0,0(%0)\n"
|
asm volatile("ld 0,0(%0)\n"
|
||||||
"ld 2,8(%0)\n"
|
"ld 2,8(%0)\n"
|
||||||
"ld 4,16(%0)\n"
|
"ld 4,16(%0)\n"
|
||||||
|
@ -255,7 +255,7 @@ s390_revalidate_registers(struct mci *mci)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (MACHINE_HAS_IEEE) {
|
if (MACHINE_HAS_IEEE) {
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
fpt_save_area = &S390_lowcore.floating_pt_save_area;
|
fpt_save_area = &S390_lowcore.floating_pt_save_area;
|
||||||
fpt_creg_save_area = &S390_lowcore.fpt_creg_save_area;
|
fpt_creg_save_area = &S390_lowcore.fpt_creg_save_area;
|
||||||
#else
|
#else
|
||||||
|
@ -314,7 +314,7 @@ s390_revalidate_registers(struct mci *mci)
|
||||||
*/
|
*/
|
||||||
s390_handle_damage("invalid control registers.");
|
s390_handle_damage("invalid control registers.");
|
||||||
else
|
else
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
asm volatile("lctlg 0,15,0(%0)"
|
asm volatile("lctlg 0,15,0(%0)"
|
||||||
: : "a" (&S390_lowcore.cregs_save_area));
|
: : "a" (&S390_lowcore.cregs_save_area));
|
||||||
#else
|
#else
|
||||||
|
@ -327,7 +327,7 @@ s390_revalidate_registers(struct mci *mci)
|
||||||
* can't write something sensible into that register.
|
* can't write something sensible into that register.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* See if we can revalidate the TOD programmable register with its
|
* See if we can revalidate the TOD programmable register with its
|
||||||
* old contents (should be zero) otherwise set it to zero.
|
* old contents (should be zero) otherwise set it to zero.
|
||||||
|
@ -384,7 +384,7 @@ s390_do_machine_check(struct pt_regs *regs)
|
||||||
if (mci->b) {
|
if (mci->b) {
|
||||||
/* Processing backup -> verify if we can survive this */
|
/* Processing backup -> verify if we can survive this */
|
||||||
u64 z_mcic, o_mcic, t_mcic;
|
u64 z_mcic, o_mcic, t_mcic;
|
||||||
#ifdef __s390x__
|
#ifdef CONFIG_64BIT
|
||||||
z_mcic = (1ULL<<63 | 1ULL<<59 | 1ULL<<29);
|
z_mcic = (1ULL<<63 | 1ULL<<59 | 1ULL<<29);
|
||||||
o_mcic = (1ULL<<43 | 1ULL<<42 | 1ULL<<41 | 1ULL<<40 |
|
o_mcic = (1ULL<<43 | 1ULL<<42 | 1ULL<<41 | 1ULL<<40 |
|
||||||
1ULL<<36 | 1ULL<<35 | 1ULL<<34 | 1ULL<<32 |
|
1ULL<<36 | 1ULL<<35 | 1ULL<<34 | 1ULL<<32 |
|
||||||
|
|
|
@ -106,7 +106,7 @@ static inline int stsi (void *sysinfo,
|
||||||
{
|
{
|
||||||
int cc, retv;
|
int cc, retv;
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_S390X
|
#ifndef CONFIG_64BIT
|
||||||
__asm__ __volatile__ ( "lr\t0,%2\n"
|
__asm__ __volatile__ ( "lr\t0,%2\n"
|
||||||
"\tlr\t1,%3\n"
|
"\tlr\t1,%3\n"
|
||||||
"\tstsi\t0(%4)\n"
|
"\tstsi\t0(%4)\n"
|
||||||
|
|
|
@ -1815,7 +1815,7 @@ config SCSI_SUNESP
|
||||||
|
|
||||||
config ZFCP
|
config ZFCP
|
||||||
tristate "FCP host bus adapter driver for IBM eServer zSeries"
|
tristate "FCP host bus adapter driver for IBM eServer zSeries"
|
||||||
depends on ARCH_S390 && QDIO && SCSI
|
depends on S390 && QDIO && SCSI
|
||||||
select SCSI_FC_ATTRS
|
select SCSI_FC_ATTRS
|
||||||
help
|
help
|
||||||
If you want to access SCSI devices attached to your IBM eServer
|
If you want to access SCSI devices attached to your IBM eServer
|
||||||
|
|
|
@ -85,7 +85,7 @@ config ATARI_PARTITION
|
||||||
|
|
||||||
config IBM_PARTITION
|
config IBM_PARTITION
|
||||||
bool "IBM disk label and partition support"
|
bool "IBM disk label and partition support"
|
||||||
depends on PARTITION_ADVANCED && ARCH_S390
|
depends on PARTITION_ADVANCED && S390
|
||||||
help
|
help
|
||||||
Say Y here if you would like to be able to read the hard disk
|
Say Y here if you would like to be able to read the hard disk
|
||||||
partition table format used by IBM DASD disks operating under CMS.
|
partition table format used by IBM DASD disks operating under CMS.
|
||||||
|
|
|
@ -308,7 +308,7 @@ int proc_pid_status(struct task_struct *task, char * buffer)
|
||||||
buffer = task_sig(task, buffer);
|
buffer = task_sig(task, buffer);
|
||||||
buffer = task_cap(task, buffer);
|
buffer = task_cap(task, buffer);
|
||||||
buffer = cpuset_task_status_allowed(task, buffer);
|
buffer = cpuset_task_status_allowed(task, buffer);
|
||||||
#if defined(CONFIG_ARCH_S390)
|
#if defined(CONFIG_S390)
|
||||||
buffer = task_show_regs(task, buffer);
|
buffer = task_show_regs(task, buffer);
|
||||||
#endif
|
#endif
|
||||||
return buffer - orig;
|
return buffer - orig;
|
||||||
|
|
|
@ -539,7 +539,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
|
||||||
#define __ARCH_WANT_SYS_SIGPENDING
|
#define __ARCH_WANT_SYS_SIGPENDING
|
||||||
#define __ARCH_WANT_SYS_SIGPROCMASK
|
#define __ARCH_WANT_SYS_SIGPROCMASK
|
||||||
#define __ARCH_WANT_SYS_RT_SIGACTION
|
#define __ARCH_WANT_SYS_RT_SIGACTION
|
||||||
# ifdef CONFIG_ARCH_S390_31
|
# ifndef CONFIG_64BIT
|
||||||
# define __ARCH_WANT_STAT64
|
# define __ARCH_WANT_STAT64
|
||||||
# define __ARCH_WANT_SYS_TIME
|
# define __ARCH_WANT_SYS_TIME
|
||||||
# endif
|
# endif
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
|
|
||||||
#if !defined(CONFIG_ARCH_S390)
|
#if !defined(CONFIG_S390)
|
||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
|
|
|
@ -189,7 +189,7 @@ config AUDIT
|
||||||
|
|
||||||
config AUDITSYSCALL
|
config AUDITSYSCALL
|
||||||
bool "Enable system-call auditing support"
|
bool "Enable system-call auditing support"
|
||||||
depends on AUDIT && (X86 || PPC || PPC64 || ARCH_S390 || IA64 || UML || SPARC64)
|
depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64)
|
||||||
default y if SECURITY_SELINUX
|
default y if SECURITY_SELINUX
|
||||||
help
|
help
|
||||||
Enable low-overhead system-call auditing infrastructure that
|
Enable low-overhead system-call auditing infrastructure that
|
||||||
|
|
|
@ -145,7 +145,7 @@ int __init rd_load_image(char *from)
|
||||||
int nblocks, i, disk;
|
int nblocks, i, disk;
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
unsigned short rotate = 0;
|
unsigned short rotate = 0;
|
||||||
#if !defined(CONFIG_ARCH_S390) && !defined(CONFIG_PPC_ISERIES)
|
#if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
|
||||||
char rotator[4] = { '|' , '/' , '-' , '\\' };
|
char rotator[4] = { '|' , '/' , '-' , '\\' };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ int __init rd_load_image(char *from)
|
||||||
}
|
}
|
||||||
sys_read(in_fd, buf, BLOCK_SIZE);
|
sys_read(in_fd, buf, BLOCK_SIZE);
|
||||||
sys_write(out_fd, buf, BLOCK_SIZE);
|
sys_write(out_fd, buf, BLOCK_SIZE);
|
||||||
#if !defined(CONFIG_ARCH_S390) && !defined(CONFIG_PPC_ISERIES)
|
#if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
|
||||||
if (!(i % 16)) {
|
if (!(i % 16)) {
|
||||||
printk("%c\b", rotator[rotate & 0x3]);
|
printk("%c\b", rotator[rotate & 0x3]);
|
||||||
rotate++;
|
rotate++;
|
||||||
|
|
|
@ -60,7 +60,7 @@ NORET_TYPE void panic(const char * fmt, ...)
|
||||||
long i;
|
long i;
|
||||||
static char buf[1024];
|
static char buf[1024];
|
||||||
va_list args;
|
va_list args;
|
||||||
#if defined(CONFIG_ARCH_S390)
|
#if defined(CONFIG_S390)
|
||||||
unsigned long caller = (unsigned long) __builtin_return_address(0);
|
unsigned long caller = (unsigned long) __builtin_return_address(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ NORET_TYPE void panic(const char * fmt, ...)
|
||||||
printk(KERN_EMERG "Press Stop-A (L1-A) to return to the boot prom\n");
|
printk(KERN_EMERG "Press Stop-A (L1-A) to return to the boot prom\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_ARCH_S390)
|
#if defined(CONFIG_S390)
|
||||||
disabled_wait(caller);
|
disabled_wait(caller);
|
||||||
#endif
|
#endif
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
|
|
@ -108,7 +108,7 @@ extern int pwrsw_enabled;
|
||||||
extern int unaligned_enabled;
|
extern int unaligned_enabled;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_S390
|
#ifdef CONFIG_S390
|
||||||
#ifdef CONFIG_MATHEMU
|
#ifdef CONFIG_MATHEMU
|
||||||
extern int sysctl_ieee_emulation_warnings;
|
extern int sysctl_ieee_emulation_warnings;
|
||||||
#endif
|
#endif
|
||||||
|
@ -542,7 +542,7 @@ static ctl_table kern_table[] = {
|
||||||
.extra1 = &minolduid,
|
.extra1 = &minolduid,
|
||||||
.extra2 = &maxolduid,
|
.extra2 = &maxolduid,
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_ARCH_S390
|
#ifdef CONFIG_S390
|
||||||
#ifdef CONFIG_MATHEMU
|
#ifdef CONFIG_MATHEMU
|
||||||
{
|
{
|
||||||
.ctl_name = KERN_IEEE_EMULATION_WARNINGS,
|
.ctl_name = KERN_IEEE_EMULATION_WARNINGS,
|
||||||
|
@ -644,7 +644,7 @@ static ctl_table kern_table[] = {
|
||||||
.mode = 0644,
|
.mode = 0644,
|
||||||
.proc_handler = &proc_dointvec,
|
.proc_handler = &proc_dointvec,
|
||||||
},
|
},
|
||||||
#if defined(CONFIG_ARCH_S390)
|
#if defined(CONFIG_S390)
|
||||||
{
|
{
|
||||||
.ctl_name = KERN_SPIN_RETRY,
|
.ctl_name = KERN_SPIN_RETRY,
|
||||||
.procname = "spin_retry",
|
.procname = "spin_retry",
|
||||||
|
|
|
@ -32,7 +32,7 @@ config MAGIC_SYSRQ
|
||||||
config LOG_BUF_SHIFT
|
config LOG_BUF_SHIFT
|
||||||
int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" if DEBUG_KERNEL
|
int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" if DEBUG_KERNEL
|
||||||
range 12 21
|
range 12 21
|
||||||
default 17 if ARCH_S390
|
default 17 if S390
|
||||||
default 16 if X86_NUMAQ || IA64
|
default 16 if X86_NUMAQ || IA64
|
||||||
default 15 if SMP
|
default 15 if SMP
|
||||||
default 14
|
default 14
|
||||||
|
|
Loading…
Reference in a new issue