[Top] [All Lists]

Re: [PATCH] mips: fix 64-bit compilation error without CONFIG_MIPS32_O32

To: Dmitri Vorobiev <>
Subject: Re: [PATCH] mips: fix 64-bit compilation error without CONFIG_MIPS32_O32
From: Alex Smith <>
Date: Fri, 20 Dec 2013 17:27:04 +0000
Cc: Linux-MIPS <>
In-reply-to: <>
List-archive: <>
List-help: <>
List-id: linux-mips <>
List-owner: <>
List-post: <>
List-software: Ecartis version 1.0.0
List-subscribe: <>
List-unsubscribe: <>
Original-recipient: rfc822;
References: <> <>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
On 20/12/13 16:48, Dmitri Vorobiev wrote:

Maybe it would be better to place the variable definition under

#ifdef CONFIG_32BIT || (CONFIG_64BIT && CONFIG_64BIT_O32)

In my opinion those pseudo-qualifiers, which simply silence the
compiler, are harmful, because they hide the problem instead of solving it.


I originally did so, but changed it to __maybe_unused as the ifdef block is somewhat ugly. The compiler is sensible to optimize the variable away when it is unused.

I can change it if others also feel that wrapping it in ifdef would be better.


On Fri, Dec 20, 2013 at 6:31 PM, Alex Smith <
<>> wrote:

    Attempting to compile a 64-bit kernel without CONFIG_MIPS32_O32 defined
    (using GCC 4.8.1) results in the following compilation error:

    arch/mips/include/asm/syscall.h: In function 'mips_get_syscall_arg':
    arch/mips/include/asm/syscall.h:32:16: error: unused variable 'usp'

    Fix by adding __maybe_unsued to the definition of usp.

    Signed-off-by: Alex Smith <
    Reviewed-by: Markos Chandras <
      arch/mips/include/asm/syscall.h | 2 +-
      1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/mips/include/asm/syscall.h
    index 81c8913..c48f8d8 100644
    --- a/arch/mips/include/asm/syscall.h
    +++ b/arch/mips/include/asm/syscall.h
    @@ -29,7 +29,7 @@ static inline long syscall_get_nr(struct
    task_struct *task,
      static inline unsigned long mips_get_syscall_arg(unsigned long *arg,
             struct task_struct *task, struct pt_regs *regs, unsigned int n)
    -       unsigned long usp = regs->regs[29];
    +       unsigned long __maybe_unused usp = regs->regs[29];

             switch (n) {
             case 0: case 1: case 2: case 3:

<Prev in Thread] Current Thread [Next in Thread>