summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/score/include/asm/elf.h18
-rw-r--r--arch/score/include/asm/irqflags.h2
-rw-r--r--arch/score/kernel/signal.c4
-rw-r--r--arch/score/mm/init.c4
-rw-r--r--arch/score/mm/pgtable.c10
5 files changed, 17 insertions, 21 deletions
diff --git a/arch/score/include/asm/elf.h b/arch/score/include/asm/elf.h
index 8324363..43526d9 100644
--- a/arch/score/include/asm/elf.h
+++ b/arch/score/include/asm/elf.h
@@ -1,9 +1,8 @@
#ifndef _ASM_SCORE_ELF_H
#define _ASM_SCORE_ELF_H
-/* ELF register definitions */
-#define ELF_NGREG 45
-#define ELF_NFPREG 33
+#include <linux/ptrace.h>
+
#define EM_SCORE7 135
/* Relocation types. */
@@ -30,11 +29,15 @@
#define R_SCORE_IMM30 20
#define R_SCORE_IMM32 21
-typedef unsigned long elf_greg_t;
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+/* ELF register definitions */
+typedef unsigned long elf_greg_t;
+
+#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-typedef double elf_fpreg_t;
-typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
+/* Score does not have fp regs. */
+typedef double elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t;
#define elf_check_arch(x) ((x)->e_machine == EM_SCORE7)
@@ -57,6 +60,7 @@ do { \
struct task_struct;
struct pt_regs;
+#define CORE_DUMP_USE_REGSET
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE PAGE_SIZE
diff --git a/arch/score/include/asm/irqflags.h b/arch/score/include/asm/irqflags.h
index 92eeb33..690a6ca 100644
--- a/arch/score/include/asm/irqflags.h
+++ b/arch/score/include/asm/irqflags.h
@@ -17,8 +17,6 @@
"nop;" \
"nop;" \
"nop;" \
- "ldi r9, 0x1;" \
- "and %0, %0, r9;" \
: "=r" (x) \
: \
: "r8", "r9" \
diff --git a/arch/score/kernel/signal.c b/arch/score/kernel/signal.c
index 950f87c..aa57440 100644
--- a/arch/score/kernel/signal.c
+++ b/arch/score/kernel/signal.c
@@ -25,14 +25,14 @@
#include <linux/errno.h>
#include <linux/signal.h>
+#include <linux/ptrace.h>
#include <linux/unistd.h>
#include <linux/uaccess.h>
+#include <asm/cacheflush.h>
#include <asm/syscalls.h>
#include <asm/ucontext.h>
-#include <asm/cacheflush.h>
-
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
struct rt_sigframe {
diff --git a/arch/score/mm/init.c b/arch/score/mm/init.c
index d496e9f..4e3dcd0 100644
--- a/arch/score/mm/init.c
+++ b/arch/score/mm/init.c
@@ -144,7 +144,8 @@ void free_initrd_mem(unsigned long start, unsigned long end)
void __init_refok free_initmem(void)
{
free_init_pages("unused kernel memory",
- (unsigned long)__init_begin, (unsigned long)__init_end);
+ __pa(&__init_begin),
+ __pa(&__init_end));
}
unsigned long pgd_current;
@@ -156,4 +157,5 @@ unsigned long pgd_current;
* are constants. So we use the variants from asm-offset.h until that gcc
* will officially be retired.
*/
+pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned(PTE_ORDER);
pte_t invalid_pte_table[PTRS_PER_PTE] __page_aligned(PTE_ORDER);
diff --git a/arch/score/mm/pgtable.c b/arch/score/mm/pgtable.c
index 10b0962..6408bb7 100644
--- a/arch/score/mm/pgtable.c
+++ b/arch/score/mm/pgtable.c
@@ -47,14 +47,6 @@ void pgd_init(unsigned long page)
void __init pagetable_init(void)
{
- unsigned long vaddr;
- pgd_t *pgd_base;
-
/* Initialize the entire pgd. */
- pgd_init((unsigned long) swapper_pg_dir);
- pgd_init((unsigned long) swapper_pg_dir
- + sizeof(pgd_t) * USER_PTRS_PER_PGD);
-
- pgd_base = swapper_pg_dir;
- vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
+ pgd_init((unsigned long)swapper_pg_dir);
}
OpenPOWER on IntegriCloud