mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: akpm@osdl.org, linux-kernel@vger.kernel.org
Subject: [patch 1/10] s390: core changes.
Date: Thu, 11 Nov 2004 18:15:10 +0100	[thread overview]
Message-ID: <20041111171510.GC4900@mschwid3.boeblingen.de.ibm.com> (raw)

[patch 1/10] s390: core changes.

From: Stefan Bader <shbader@de.ibm.com>
From: Martin Schwidefsky <schwidefsky@de.ibm.com>

s390 core changes:
 - Store correct set of registers to core dumps.
 - Fix make install with separate obj directory.
 - Regenerate default configuration.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

diffstat:
 arch/s390/boot/Makefile         |    2 +-
 arch/s390/defconfig             |   27 ++++++++++++++++++++-------
 arch/s390/kernel/binfmt_elf32.c |   29 ++++++++++++++++++++++++++++-
 include/asm-s390/elf.h          |   11 +++++++++--
 4 files changed, 58 insertions(+), 11 deletions(-)

diff -urN linux-2.6/arch/s390/boot/Makefile linux-2.6-patched/arch/s390/boot/Makefile
--- linux-2.6/arch/s390/boot/Makefile	2004-10-18 23:55:36.000000000 +0200
+++ linux-2.6-patched/arch/s390/boot/Makefile	2004-11-11 15:06:53.000000000 +0100
@@ -14,5 +14,5 @@
 	$(call if_changed,objcopy)
 
 install: $(CONFIGURE) $(obj)/image
-	sh -x $(obj)/install.sh $(KERNELRELEASE) $(obj)/image \
+	sh -x  $(srctree)/$(obj)/install.sh $(KERNELRELEASE) $(obj)/image \
 	      System.map Kerntypes "$(INSTALL_PATH)"
diff -urN linux-2.6/arch/s390/defconfig linux-2.6-patched/arch/s390/defconfig
--- linux-2.6/arch/s390/defconfig	2004-11-11 15:06:35.000000000 +0100
+++ linux-2.6-patched/arch/s390/defconfig	2004-11-11 15:06:53.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9
-# Fri Oct 22 13:50:22 2004
+# Linux kernel version: 2.6.10-rc1
+# Thu Nov 11 12:54:21 2004
 #
 CONFIG_MMU=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
@@ -13,6 +13,7 @@
 #
 CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
+CONFIG_LOCK_KERNEL=y
 
 #
 # General setup
@@ -35,12 +36,12 @@
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
 
 #
@@ -177,6 +178,14 @@
 # CONFIG_DASD_CMB is not set
 
 #
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+
+#
 # Multi-device support (RAID and LVM)
 #
 CONFIG_MD=y
@@ -262,6 +271,8 @@
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_IP_TCPDIAG=y
+CONFIG_IP_TCPDIAG_IPV6=y
 CONFIG_IPV6=y
 # CONFIG_IPV6_PRIVACY is not set
 # CONFIG_INET6_AH is not set
@@ -289,7 +300,6 @@
 # CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
 
 #
 # QoS and/or fair queueing
@@ -408,6 +418,7 @@
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
 # CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 
@@ -516,6 +527,7 @@
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_INFO is not set
 
 #
@@ -548,6 +560,7 @@
 # CONFIG_CRYPTO_TEA is not set
 # CONFIG_CRYPTO_ARC4 is not set
 # CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
 # CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
diff -urN linux-2.6/arch/s390/kernel/binfmt_elf32.c linux-2.6-patched/arch/s390/kernel/binfmt_elf32.c
--- linux-2.6/arch/s390/kernel/binfmt_elf32.c	2004-10-18 23:55:07.000000000 +0200
+++ linux-2.6-patched/arch/s390/kernel/binfmt_elf32.c	2004-11-11 15:06:53.000000000 +0100
@@ -56,6 +56,9 @@
 
 #define ELF_CORE_COPY_REGS(pr_reg, regs) dump_regs32(regs, &pr_reg);
 
+#define ELF_CORE_COPY_TASK_REGS(tsk, regs) dump_task_regs32(tsk, regs)
+
+#define ELF_CORE_COPY_FPREGS(tsk, fpregs) dump_task_fpu(tsk, fpregs)
 
 /* This yields a mask that user programs can use to figure out what
    instruction set this CPU supports. */
@@ -99,13 +102,37 @@
 	int i;
 
 	memcpy(&regs->psw.mask, &ptregs->psw.mask, 4);
-	memcpy(&regs->psw.addr, &ptregs->psw.addr, 4);
+	memcpy(&regs->psw.addr, (char *)&ptregs->psw.addr + 4, 4);
 	for (i = 0; i < NUM_GPRS; i++)
 		regs->gprs[i] = ptregs->gprs[i];
+	save_access_regs(regs->acrs);
 	regs->orig_gpr2 = ptregs->orig_gpr2;
 	return 1;
 }
 
+static inline int dump_task_regs32(struct task_struct *tsk, elf_gregset_t *regs)
+{
+	struct pt_regs *ptregs = __KSTK_PTREGS(tsk);
+	int i;
+
+	memcpy(&regs->psw.mask, &ptregs->psw.mask, 4);
+	memcpy(&regs->psw.addr, (char *)&ptregs->psw.addr + 4, 4);
+	for (i = 0; i < NUM_GPRS; i++)
+		regs->gprs[i] = ptregs->gprs[i];
+	memcpy(regs->acrs, tsk->thread.acrs, sizeof(regs->acrs));
+	regs->orig_gpr2 = ptregs->orig_gpr2;
+	return 1;
+}
+
+static inline int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpregs)
+{
+	if (tsk == current)
+		save_fp_regs((s390_fp_regs *) fpregs);
+	else
+		memcpy(fpregs, &tsk->thread.fp_regs, sizeof(elf_fpregset_t));
+	return 1;
+}
+
 #include <asm/processor.h>
 #include <linux/module.h>
 #include <linux/config.h>
diff -urN linux-2.6/include/asm-s390/elf.h linux-2.6-patched/include/asm-s390/elf.h
--- linux-2.6/include/asm-s390/elf.h	2004-10-18 23:55:07.000000000 +0200
+++ linux-2.6-patched/include/asm-s390/elf.h	2004-11-11 15:06:53.000000000 +0100
@@ -98,6 +98,7 @@
 
 #include <asm/ptrace.h>
 #include <asm/user.h>
+#include <asm/system.h>		/* for save_access_regs */
 
 
 typedef s390_fp_regs elf_fpregset_t;
@@ -152,6 +153,7 @@
 static inline int dump_regs(struct pt_regs *ptregs, elf_gregset_t *regs)
 {
 	memcpy(&regs->psw, &ptregs->psw, sizeof(regs->psw)+sizeof(regs->gprs));
+	save_access_regs(regs->acrs);
 	regs->orig_gpr2 = ptregs->orig_gpr2;
 	return 1;
 }
@@ -160,8 +162,10 @@
 
 static inline int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs)
 {
-	dump_regs(__KSTK_PTREGS(tsk), regs);
+	struct pt_regs *ptregs = __KSTK_PTREGS(tsk);
+	memcpy(&regs->psw, &ptregs->psw, sizeof(regs->psw)+sizeof(regs->gprs));
 	memcpy(regs->acrs, tsk->thread.acrs, sizeof(regs->acrs));
+	regs->orig_gpr2 = ptregs->orig_gpr2;
 	return 1;
 }
 
@@ -169,7 +173,10 @@
 
 static inline int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpregs)
 {
-	memcpy(fpregs, &tsk->thread.fp_regs, sizeof(elf_fpregset_t));
+	if (tsk == current)
+		save_fp_regs(fpregs);
+	else
+		memcpy(fpregs, &tsk->thread.fp_regs, sizeof(elf_fpregset_t));
 	return 1;
 }
 

                 reply	other threads:[~2004-11-11 17:19 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20041111171510.GC4900@mschwid3.boeblingen.de.ibm.com \
    --to=schwidefsky@de.ibm.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®