From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755952AbcJFOq3 (ORCPT ); Thu, 6 Oct 2016 10:46:29 -0400 Received: from mga04.intel.com ([192.55.52.120]:3622 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751534AbcJFOqU (ORCPT ); Thu, 6 Oct 2016 10:46:20 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,454,1473145200"; d="scan'208";a="1050309352" From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= To: linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Vincent=20Stehl=C3=A9?= , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Jiri Olsa , Adrian Hunter Subject: [PATCH 2/2] perf x86: fix compilation of push/pop for x32 Date: Thu, 6 Oct 2016 16:34:45 +0200 Message-Id: <20161006143445.8523-2-vincent.stehle@intel.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20161006143445.8523-1-vincent.stehle@intel.com> References: <20161006143445.8523-1-vincent.stehle@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The x32 ABI (a.k.a AMD64 ILP32) necessitates to push or pop a 64-bit register even though ILP32 uses 32-bit integers, longs and pointers. This fixes the following build errors: arch/x86/tests/regs_load.S:65: Error: operand type mismatch for `push' arch/x86/tests/regs_load.S:72: Error: operand type mismatch for `pop' Signed-off-by: Vincent Stehlé Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Arnaldo Carvalho de Melo Cc: Jiri Olsa Cc: Adrian Hunter --- tools/perf/arch/x86/tests/regs_load.S | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/perf/arch/x86/tests/regs_load.S b/tools/perf/arch/x86/tests/regs_load.S index 60875d5..4fa7943 100644 --- a/tools/perf/arch/x86/tests/regs_load.S +++ b/tools/perf/arch/x86/tests/regs_load.S @@ -62,14 +62,22 @@ ENTRY(perf_regs_load) ENDPROC(perf_regs_load) #else ENTRY(perf_regs_load) +#if defined(__x86_64__) && defined(__ILP32__) + pushq %rdi +#else push %edi +#endif movl 8(%esp), %edi movl %eax, AX(%edi) movl %ebx, BX(%edi) movl %ecx, CX(%edi) movl %edx, DX(%edi) movl %esi, SI(%edi) +#if defined(__x86_64__) && defined(__ILP32__) + popq %rax +#else pop %eax +#endif movl %eax, DI(%edi) movl %ebp, BP(%edi) -- 2.9.3