Skip to content

Commit

Permalink
Merge tag 'nios2-fix-4.0-rc4' of git://git.rocketboards.org/linux-soc…
Browse files Browse the repository at this point in the history
…fpga-next

Pull arch/nios2 fix from Ley Foon Tan:
 "Remove pt_regs from user header and use generic ucontext.h"

* tag 'nios2-fix-4.0-rc4' of git://git.rocketboards.org/linux-socfpga-next:
  nios2: update pt_regs
  • Loading branch information
Linus Torvalds committed Mar 12, 2015
2 parents 53da3bc + 92d5dd8 commit 5627511
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 89 deletions.
47 changes: 47 additions & 0 deletions arch/nios2/include/asm/ptrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,54 @@

#include <uapi/asm/ptrace.h>

/* This struct defines the way the registers are stored on the
stack during a system call. */

#ifndef __ASSEMBLY__
struct pt_regs {
unsigned long r8; /* r8-r15 Caller-saved GP registers */
unsigned long r9;
unsigned long r10;
unsigned long r11;
unsigned long r12;
unsigned long r13;
unsigned long r14;
unsigned long r15;
unsigned long r1; /* Assembler temporary */
unsigned long r2; /* Retval LS 32bits */
unsigned long r3; /* Retval MS 32bits */
unsigned long r4; /* r4-r7 Register arguments */
unsigned long r5;
unsigned long r6;
unsigned long r7;
unsigned long orig_r2; /* Copy of r2 ?? */
unsigned long ra; /* Return address */
unsigned long fp; /* Frame pointer */
unsigned long sp; /* Stack pointer */
unsigned long gp; /* Global pointer */
unsigned long estatus;
unsigned long ea; /* Exception return address (pc) */
unsigned long orig_r7;
};

/*
* This is the extended stack used by signal handlers and the context
* switcher: it's pushed after the normal "struct pt_regs".
*/
struct switch_stack {
unsigned long r16; /* r16-r23 Callee-saved GP registers */
unsigned long r17;
unsigned long r18;
unsigned long r19;
unsigned long r20;
unsigned long r21;
unsigned long r22;
unsigned long r23;
unsigned long fp;
unsigned long gp;
unsigned long ra;
};

#define user_mode(regs) (((regs)->estatus & ESTATUS_EU))

#define instruction_pointer(regs) ((regs)->ra)
Expand Down
32 changes: 0 additions & 32 deletions arch/nios2/include/asm/ucontext.h

This file was deleted.

2 changes: 2 additions & 0 deletions arch/nios2/include/uapi/asm/Kbuild
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ include include/uapi/asm-generic/Kbuild.asm

header-y += elf.h
header-y += ucontext.h

generic-y += ucontext.h
4 changes: 1 addition & 3 deletions arch/nios2/include/uapi/asm/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,7 @@

typedef unsigned long elf_greg_t;

#define ELF_NGREG \
((sizeof(struct pt_regs) + sizeof(struct switch_stack)) / \
sizeof(elf_greg_t))
#define ELF_NGREG 49
typedef elf_greg_t elf_gregset_t[ELF_NGREG];

typedef unsigned long elf_fpregset_t;
Expand Down
50 changes: 3 additions & 47 deletions arch/nios2/include/uapi/asm/ptrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,53 +67,9 @@

#define NUM_PTRACE_REG (PTR_TLBMISC + 1)

/* this struct defines the way the registers are stored on the
stack during a system call.
There is a fake_regs in setup.c that has to match pt_regs.*/

struct pt_regs {
unsigned long r8; /* r8-r15 Caller-saved GP registers */
unsigned long r9;
unsigned long r10;
unsigned long r11;
unsigned long r12;
unsigned long r13;
unsigned long r14;
unsigned long r15;
unsigned long r1; /* Assembler temporary */
unsigned long r2; /* Retval LS 32bits */
unsigned long r3; /* Retval MS 32bits */
unsigned long r4; /* r4-r7 Register arguments */
unsigned long r5;
unsigned long r6;
unsigned long r7;
unsigned long orig_r2; /* Copy of r2 ?? */
unsigned long ra; /* Return address */
unsigned long fp; /* Frame pointer */
unsigned long sp; /* Stack pointer */
unsigned long gp; /* Global pointer */
unsigned long estatus;
unsigned long ea; /* Exception return address (pc) */
unsigned long orig_r7;
};

/*
* This is the extended stack used by signal handlers and the context
* switcher: it's pushed after the normal "struct pt_regs".
*/
struct switch_stack {
unsigned long r16; /* r16-r23 Callee-saved GP registers */
unsigned long r17;
unsigned long r18;
unsigned long r19;
unsigned long r20;
unsigned long r21;
unsigned long r22;
unsigned long r23;
unsigned long fp;
unsigned long gp;
unsigned long ra;
/* User structures for general purpose registers. */
struct user_pt_regs {
__u32 regs[49];
};

#endif /* __ASSEMBLY__ */
Expand Down
12 changes: 7 additions & 5 deletions arch/nios2/include/uapi/asm/sigcontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@
* details.
*/

#ifndef _ASM_NIOS2_SIGCONTEXT_H
#define _ASM_NIOS2_SIGCONTEXT_H
#ifndef _UAPI__ASM_SIGCONTEXT_H
#define _UAPI__ASM_SIGCONTEXT_H

#include <asm/ptrace.h>
#include <linux/types.h>

#define MCONTEXT_VERSION 2

struct sigcontext {
struct pt_regs regs;
unsigned long sc_mask; /* old sigmask */
int version;
unsigned long gregs[32];
};

#endif
4 changes: 2 additions & 2 deletions arch/nios2/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ static inline int rt_restore_ucontext(struct pt_regs *regs,
struct ucontext *uc, int *pr2)
{
int temp;
greg_t *gregs = uc->uc_mcontext.gregs;
unsigned long *gregs = uc->uc_mcontext.gregs;
int err;

/* Always make any pending restarted system calls return -EINTR */
Expand Down Expand Up @@ -127,7 +127,7 @@ asmlinkage int do_rt_sigreturn(struct switch_stack *sw)
static inline int rt_setup_ucontext(struct ucontext *uc, struct pt_regs *regs)
{
struct switch_stack *sw = (struct switch_stack *)regs - 1;
greg_t *gregs = uc->uc_mcontext.gregs;
unsigned long *gregs = uc->uc_mcontext.gregs;
int err = 0;

err |= __put_user(MCONTEXT_VERSION, &uc->uc_mcontext.version);
Expand Down

0 comments on commit 5627511

Please sign in to comment.