From patchwork Tue Feb 9 10:39:54 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 8259831 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id E67E9BEEE5 for ; Tue, 9 Feb 2016 10:46:16 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3D06F2022A for ; Tue, 9 Feb 2016 10:46:16 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8A60020160 for ; Tue, 9 Feb 2016 10:46:15 +0000 (UTC) Received: from localhost ([::1]:54124 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aT5oE-0007qy-Tc for patchwork-qemu-devel@patchwork.kernel.org; Tue, 09 Feb 2016 05:46:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46212) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aT5ih-0006Rz-57 for qemu-devel@nongnu.org; Tue, 09 Feb 2016 05:40:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aT5ie-0005Pk-B7 for qemu-devel@nongnu.org; Tue, 09 Feb 2016 05:40:31 -0500 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:35770) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aT5ie-0005Pc-4J for qemu-devel@nongnu.org; Tue, 09 Feb 2016 05:40:28 -0500 Received: by mail-pf0-x244.google.com with SMTP id 66so9830803pfe.2 for ; Tue, 09 Feb 2016 02:40:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=OVI/KfX3ItSYpLxjCpwTq/2YYXDILOoD4/f+LIhV+xQ=; b=leXQ/zn00oZIvEVgjl9ZWWG/4OGRMJk45mi9AMW/SJxenuiL6fRUmNsykL4xU2V+Ai vfKsL8Se9MpKrpz3BGAjUlZEj9310kUV5JGE/BHQYBXyX0k/qUDrLioRP+ZswOK8AKHA x5PJMYDVEAlt8JW9Xde/ASgl8qCJlzUkQ4UcV28PvnMVsZXJk6oDrx1FiXoZt0KRHVoq LGw53hprYDf6hTkexj7WX3l6EdpZEfOdeCRaRanYgsX1yZjTk79D551fPevCSYhQUejH 71gzHNhX0nDNnWr9DqLIpditfVaKbeK7eODMUdmV2inDACZznVK6g+4GBknunz4LoCCj ZP/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=OVI/KfX3ItSYpLxjCpwTq/2YYXDILOoD4/f+LIhV+xQ=; b=DtzySpOXRTBT/cfskXIr3dsxywhZVXrNVwgzel15r7EIx3TIc7iQXF/GO2YS8MIF/U 7dCWOjVAZQ8wNSoiVDesSVS6dG/wo2k+h+xo0eJ7FukGC/Ve3nZaeR1bIuKtt204Eg7l acHh3O4WwLPtfC7r06Vv+snYpAlVWnGd1envgmS4eyBrDyTCl1y+yWkd1A+BumWg9rsA 1tYAvJddhnxTbzTCCEsk8ovutb+wOYA42VyPc/++j6txwzgH4BX8I7SAUlUj4Tk38nzG c4qn8vu0Ya2dmm4g4ModtBD0K8jxDkUfXTkmukzczgWmebL+wt2v5MEmh9TrwosVPxYp vFXw== X-Gm-Message-State: AG10YOTj0Jt6Yp7BBel3nSWv8BgOqi8vPFuy3uGkpJyV67kE/SK++YcgtWnXE2TcSCXAEA== X-Received: by 10.98.42.85 with SMTP id q82mr6420599pfq.18.1455014427432; Tue, 09 Feb 2016 02:40:27 -0800 (PST) Received: from bigtime.gateway (alanje.lnk.telstra.net. [120.151.179.201]) by smtp.gmail.com with ESMTPSA id 1sm49669183pfm.10.2016.02.09.02.40.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Feb 2016 02:40:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 9 Feb 2016 21:39:54 +1100 Message-Id: <1455014403-10742-7-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1455014403-10742-1-git-send-email-rth@twiddle.net> References: <1455014403-10742-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::244 Cc: james.hogan@imgtec.com, aurelien@aurel32.net Subject: [Qemu-devel] [PATCH 06/15] tcg-mips: Add tcg unwind info X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Richard Henderson --- tcg/mips/tcg-target.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c index 89083fb..e986437 100644 --- a/tcg/mips/tcg-target.c +++ b/tcg/mips/tcg-target.c @@ -2302,3 +2302,47 @@ void tb_set_jmp_target1(uintptr_t jmp_addr, uintptr_t addr) *ptr = deposit32(*ptr, 0, 26, addr >> 2); flush_icache_range(jmp_addr, jmp_addr + 4); } + +typedef struct { + DebugFrameHeader h; + uint8_t fde_def_cfa[4]; + uint8_t fde_reg_ofs[ARRAY_SIZE(tcg_target_callee_save_regs) * 2]; +} DebugFrame; + +#define ELF_HOST_MACHINE EM_MIPS +/* GDB doesn't appear to require proper setting of ELF_HOST_FLAGS, + which is good because they're really quite complicated for MIPS. */ + +static const DebugFrame debug_frame = { + .h.cie.len = sizeof(DebugFrameCIE)-4, /* length after .len member */ + .h.cie.id = -1, + .h.cie.version = 1, + .h.cie.code_align = 1, + .h.cie.data_align = -(TCG_TARGET_REG_BITS / 8) & 0x7f, /* sleb128 */ + .h.cie.return_column = TCG_REG_RA, + + /* Total FDE size does not include the "len" member. */ + .h.fde.len = sizeof(DebugFrame) - offsetof(DebugFrame, h.fde.cie_offset), + + .fde_def_cfa = { + 12, TCG_REG_SP, /* DW_CFA_def_cfa sp, ... */ + (FRAME_SIZE & 0x7f) | 0x80, /* ... uleb128 FRAME_SIZE */ + (FRAME_SIZE >> 7) + }, + .fde_reg_ofs = { + 0x80 + 16, 9, /* DW_CFA_offset, s0, -72 */ + 0x80 + 17, 8, /* DW_CFA_offset, s2, -64 */ + 0x80 + 18, 7, /* DW_CFA_offset, s3, -56 */ + 0x80 + 19, 6, /* DW_CFA_offset, s4, -48 */ + 0x80 + 20, 5, /* DW_CFA_offset, s5, -40 */ + 0x80 + 21, 4, /* DW_CFA_offset, s6, -32 */ + 0x80 + 22, 3, /* DW_CFA_offset, s7, -24 */ + 0x80 + 30, 2, /* DW_CFA_offset, s8, -16 */ + 0x80 + 31, 1, /* DW_CFA_offset, ra, -8 */ + } +}; + +void tcg_register_jit(void *buf, size_t buf_size) +{ + tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame)); +}