MIPS: asm/reg.h: Make 32- and 64-bit definitions available at the same time
authorAlex Smith <alex@alex-smith.me.uk>
Wed, 23 Jul 2014 13:40:08 +0000 (14:40 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 30 Jul 2014 21:27:40 +0000 (23:27 +0200)
Get rid of the WANT_COMPAT_REG_H test and instead define both the 32-
and 64-bit register offset definitions at the same time with
MIPS{32,64}_ prefixes, then define the existing EF_* names to the
correct definitions for the kernel's bitness.

This patch is a prerequisite of the following bug fix patch.

Signed-off-by: Alex Smith <alex@alex-smith.me.uk>
Cc: <stable@vger.kernel.org> # v3.13+
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7451/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/reg.h
arch/mips/kernel/binfmt_elfo32.c

index 910e71a12466de2f1fb3f1fab82c6203ef062e63..b8343ccbc98986b910e72bf65fb9aa71120e4478 100644 (file)
 #ifndef __ASM_MIPS_REG_H
 #define __ASM_MIPS_REG_H
 
-
-#if defined(CONFIG_32BIT) || defined(WANT_COMPAT_REG_H)
-
-#define EF_R0                  6
-#define EF_R1                  7
-#define EF_R2                  8
-#define EF_R3                  9
-#define EF_R4                  10
-#define EF_R5                  11
-#define EF_R6                  12
-#define EF_R7                  13
-#define EF_R8                  14
-#define EF_R9                  15
-#define EF_R10                 16
-#define EF_R11                 17
-#define EF_R12                 18
-#define EF_R13                 19
-#define EF_R14                 20
-#define EF_R15                 21
-#define EF_R16                 22
-#define EF_R17                 23
-#define EF_R18                 24
-#define EF_R19                 25
-#define EF_R20                 26
-#define EF_R21                 27
-#define EF_R22                 28
-#define EF_R23                 29
-#define EF_R24                 30
-#define EF_R25                 31
+#define MIPS32_EF_R0           6
+#define MIPS32_EF_R1           7
+#define MIPS32_EF_R2           8
+#define MIPS32_EF_R3           9
+#define MIPS32_EF_R4           10
+#define MIPS32_EF_R5           11
+#define MIPS32_EF_R6           12
+#define MIPS32_EF_R7           13
+#define MIPS32_EF_R8           14
+#define MIPS32_EF_R9           15
+#define MIPS32_EF_R10          16
+#define MIPS32_EF_R11          17
+#define MIPS32_EF_R12          18
+#define MIPS32_EF_R13          19
+#define MIPS32_EF_R14          20
+#define MIPS32_EF_R15          21
+#define MIPS32_EF_R16          22
+#define MIPS32_EF_R17          23
+#define MIPS32_EF_R18          24
+#define MIPS32_EF_R19          25
+#define MIPS32_EF_R20          26
+#define MIPS32_EF_R21          27
+#define MIPS32_EF_R22          28
+#define MIPS32_EF_R23          29
+#define MIPS32_EF_R24          30
+#define MIPS32_EF_R25          31
 
 /*
  * k0/k1 unsaved
  */
-#define EF_R26                 32
-#define EF_R27                 33
+#define MIPS32_EF_R26          32
+#define MIPS32_EF_R27          33
 
-#define EF_R28                 34
-#define EF_R29                 35
-#define EF_R30                 36
-#define EF_R31                 37
+#define MIPS32_EF_R28          34
+#define MIPS32_EF_R29          35
+#define MIPS32_EF_R30          36
+#define MIPS32_EF_R31          37
 
 /*
  * Saved special registers
  */
-#define EF_LO                  38
-#define EF_HI                  39
-
-#define EF_CP0_EPC             40
-#define EF_CP0_BADVADDR                41
-#define EF_CP0_STATUS          42
-#define EF_CP0_CAUSE           43
-#define EF_UNUSED0             44
-
-#define EF_SIZE                        180
-
-#endif
-
-#if defined(CONFIG_64BIT) && !defined(WANT_COMPAT_REG_H)
-
-#define EF_R0                   0
-#define EF_R1                   1
-#define EF_R2                   2
-#define EF_R3                   3
-#define EF_R4                   4
-#define EF_R5                   5
-#define EF_R6                   6
-#define EF_R7                   7
-#define EF_R8                   8
-#define EF_R9                   9
-#define EF_R10                 10
-#define EF_R11                 11
-#define EF_R12                 12
-#define EF_R13                 13
-#define EF_R14                 14
-#define EF_R15                 15
-#define EF_R16                 16
-#define EF_R17                 17
-#define EF_R18                 18
-#define EF_R19                 19
-#define EF_R20                 20
-#define EF_R21                 21
-#define EF_R22                 22
-#define EF_R23                 23
-#define EF_R24                 24
-#define EF_R25                 25
+#define MIPS32_EF_LO           38
+#define MIPS32_EF_HI           39
+
+#define MIPS32_EF_CP0_EPC      40
+#define MIPS32_EF_CP0_BADVADDR 41
+#define MIPS32_EF_CP0_STATUS   42
+#define MIPS32_EF_CP0_CAUSE    43
+#define MIPS32_EF_UNUSED0      44
+
+#define MIPS32_EF_SIZE         180
+
+#define MIPS64_EF_R0           0
+#define MIPS64_EF_R1           1
+#define MIPS64_EF_R2           2
+#define MIPS64_EF_R3           3
+#define MIPS64_EF_R4           4
+#define MIPS64_EF_R5           5
+#define MIPS64_EF_R6           6
+#define MIPS64_EF_R7           7
+#define MIPS64_EF_R8           8
+#define MIPS64_EF_R9           9
+#define MIPS64_EF_R10          10
+#define MIPS64_EF_R11          11
+#define MIPS64_EF_R12          12
+#define MIPS64_EF_R13          13
+#define MIPS64_EF_R14          14
+#define MIPS64_EF_R15          15
+#define MIPS64_EF_R16          16
+#define MIPS64_EF_R17          17
+#define MIPS64_EF_R18          18
+#define MIPS64_EF_R19          19
+#define MIPS64_EF_R20          20
+#define MIPS64_EF_R21          21
+#define MIPS64_EF_R22          22
+#define MIPS64_EF_R23          23
+#define MIPS64_EF_R24          24
+#define MIPS64_EF_R25          25
 
 /*
  * k0/k1 unsaved
  */
-#define EF_R26                 26
-#define EF_R27                 27
+#define MIPS64_EF_R26          26
+#define MIPS64_EF_R27          27
 
 
-#define EF_R28                 28
-#define EF_R29                 29
-#define EF_R30                 30
-#define EF_R31                 31
+#define MIPS64_EF_R28          28
+#define MIPS64_EF_R29          29
+#define MIPS64_EF_R30          30
+#define MIPS64_EF_R31          31
 
 /*
  * Saved special registers
  */
-#define EF_LO                  32
-#define EF_HI                  33
-
-#define EF_CP0_EPC             34
-#define EF_CP0_BADVADDR                35
-#define EF_CP0_STATUS          36
-#define EF_CP0_CAUSE           37
-
-#define EF_SIZE                        304     /* size in bytes */
+#define MIPS64_EF_LO           32
+#define MIPS64_EF_HI           33
+
+#define MIPS64_EF_CP0_EPC      34
+#define MIPS64_EF_CP0_BADVADDR 35
+#define MIPS64_EF_CP0_STATUS   36
+#define MIPS64_EF_CP0_CAUSE    37
+
+#define MIPS64_EF_SIZE         304     /* size in bytes */
+
+#if defined(CONFIG_32BIT)
+
+#define EF_R0                  MIPS32_EF_R0
+#define EF_R1                  MIPS32_EF_R1
+#define EF_R2                  MIPS32_EF_R2
+#define EF_R3                  MIPS32_EF_R3
+#define EF_R4                  MIPS32_EF_R4
+#define EF_R5                  MIPS32_EF_R5
+#define EF_R6                  MIPS32_EF_R6
+#define EF_R7                  MIPS32_EF_R7
+#define EF_R8                  MIPS32_EF_R8
+#define EF_R9                  MIPS32_EF_R9
+#define EF_R10                 MIPS32_EF_R10
+#define EF_R11                 MIPS32_EF_R11
+#define EF_R12                 MIPS32_EF_R12
+#define EF_R13                 MIPS32_EF_R13
+#define EF_R14                 MIPS32_EF_R14
+#define EF_R15                 MIPS32_EF_R15
+#define EF_R16                 MIPS32_EF_R16
+#define EF_R17                 MIPS32_EF_R17
+#define EF_R18                 MIPS32_EF_R18
+#define EF_R19                 MIPS32_EF_R19
+#define EF_R20                 MIPS32_EF_R20
+#define EF_R21                 MIPS32_EF_R21
+#define EF_R22                 MIPS32_EF_R22
+#define EF_R23                 MIPS32_EF_R23
+#define EF_R24                 MIPS32_EF_R24
+#define EF_R25                 MIPS32_EF_R25
+#define EF_R26                 MIPS32_EF_R26
+#define EF_R27                 MIPS32_EF_R27
+#define EF_R28                 MIPS32_EF_R28
+#define EF_R29                 MIPS32_EF_R29
+#define EF_R30                 MIPS32_EF_R30
+#define EF_R31                 MIPS32_EF_R31
+#define EF_LO                  MIPS32_EF_LO
+#define EF_HI                  MIPS32_EF_HI
+#define EF_CP0_EPC             MIPS32_EF_CP0_EPC
+#define EF_CP0_BADVADDR                MIPS32_EF_CP0_BADVADDR
+#define EF_CP0_STATUS          MIPS32_EF_CP0_STATUS
+#define EF_CP0_CAUSE           MIPS32_EF_CP0_CAUSE
+#define EF_UNUSED0             MIPS32_EF_UNUSED0
+#define EF_SIZE                        MIPS32_EF_SIZE
+
+#elif defined(CONFIG_64BIT)
+
+#define EF_R0                  MIPS64_EF_R0
+#define EF_R1                  MIPS64_EF_R1
+#define EF_R2                  MIPS64_EF_R2
+#define EF_R3                  MIPS64_EF_R3
+#define EF_R4                  MIPS64_EF_R4
+#define EF_R5                  MIPS64_EF_R5
+#define EF_R6                  MIPS64_EF_R6
+#define EF_R7                  MIPS64_EF_R7
+#define EF_R8                  MIPS64_EF_R8
+#define EF_R9                  MIPS64_EF_R9
+#define EF_R10                 MIPS64_EF_R10
+#define EF_R11                 MIPS64_EF_R11
+#define EF_R12                 MIPS64_EF_R12
+#define EF_R13                 MIPS64_EF_R13
+#define EF_R14                 MIPS64_EF_R14
+#define EF_R15                 MIPS64_EF_R15
+#define EF_R16                 MIPS64_EF_R16
+#define EF_R17                 MIPS64_EF_R17
+#define EF_R18                 MIPS64_EF_R18
+#define EF_R19                 MIPS64_EF_R19
+#define EF_R20                 MIPS64_EF_R20
+#define EF_R21                 MIPS64_EF_R21
+#define EF_R22                 MIPS64_EF_R22
+#define EF_R23                 MIPS64_EF_R23
+#define EF_R24                 MIPS64_EF_R24
+#define EF_R25                 MIPS64_EF_R25
+#define EF_R26                 MIPS64_EF_R26
+#define EF_R27                 MIPS64_EF_R27
+#define EF_R28                 MIPS64_EF_R28
+#define EF_R29                 MIPS64_EF_R29
+#define EF_R30                 MIPS64_EF_R30
+#define EF_R31                 MIPS64_EF_R31
+#define EF_LO                  MIPS64_EF_LO
+#define EF_HI                  MIPS64_EF_HI
+#define EF_CP0_EPC             MIPS64_EF_CP0_EPC
+#define EF_CP0_BADVADDR                MIPS64_EF_CP0_BADVADDR
+#define EF_CP0_STATUS          MIPS64_EF_CP0_STATUS
+#define EF_CP0_CAUSE           MIPS64_EF_CP0_CAUSE
+#define EF_SIZE                        MIPS64_EF_SIZE
 
 #endif /* CONFIG_64BIT */
 
index 7faf5f2bee25d7d9a0ca51e629ce2340161162aa..71df942fb77c41c778059b75ed51c28b424aba61 100644 (file)
@@ -72,12 +72,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
 
 #include <asm/processor.h>
 
-/*
- * When this file is selected, we are definitely running a 64bit kernel.
- * So using the right regs define in asm/reg.h
- */
-#define WANT_COMPAT_REG_H
-
 /* These MUST be defined before elf.h gets included */
 extern void elf32_core_copy_regs(elf_gregset_t grp, struct pt_regs *regs);
 #define ELF_CORE_COPY_REGS(_dest, _regs) elf32_core_copy_regs(_dest, _regs);
@@ -149,21 +143,21 @@ void elf32_core_copy_regs(elf_gregset_t grp, struct pt_regs *regs)
 {
        int i;
 
-       for (i = 0; i < EF_R0; i++)
+       for (i = 0; i < MIPS32_EF_R0; i++)
                grp[i] = 0;
-       grp[EF_R0] = 0;
+       grp[MIPS32_EF_R0] = 0;
        for (i = 1; i <= 31; i++)
-               grp[EF_R0 + i] = (elf_greg_t) regs->regs[i];
-       grp[EF_R26] = 0;
-       grp[EF_R27] = 0;
-       grp[EF_LO] = (elf_greg_t) regs->lo;
-       grp[EF_HI] = (elf_greg_t) regs->hi;
-       grp[EF_CP0_EPC] = (elf_greg_t) regs->cp0_epc;
-       grp[EF_CP0_BADVADDR] = (elf_greg_t) regs->cp0_badvaddr;
-       grp[EF_CP0_STATUS] = (elf_greg_t) regs->cp0_status;
-       grp[EF_CP0_CAUSE] = (elf_greg_t) regs->cp0_cause;
-#ifdef EF_UNUSED0
-       grp[EF_UNUSED0] = 0;
+               grp[MIPS32_EF_R0 + i] = (elf_greg_t) regs->regs[i];
+       grp[MIPS32_EF_R26] = 0;
+       grp[MIPS32_EF_R27] = 0;
+       grp[MIPS32_EF_LO] = (elf_greg_t) regs->lo;
+       grp[MIPS32_EF_HI] = (elf_greg_t) regs->hi;
+       grp[MIPS32_EF_CP0_EPC] = (elf_greg_t) regs->cp0_epc;
+       grp[MIPS32_EF_CP0_BADVADDR] = (elf_greg_t) regs->cp0_badvaddr;
+       grp[MIPS32_EF_CP0_STATUS] = (elf_greg_t) regs->cp0_status;
+       grp[MIPS32_EF_CP0_CAUSE] = (elf_greg_t) regs->cp0_cause;
+#ifdef MIPS32_EF_UNUSED0
+       grp[MIPS32_EF_UNUSED0] = 0;
 #endif
 }