From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41599) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKi5-0006hw-5L for qemu-devel@nongnu.org; Sat, 14 May 2011 15:41:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QLKi4-0003Eq-2L for qemu-devel@nongnu.org; Sat, 14 May 2011 15:41:09 -0400 Received: from mail-qy0-f173.google.com ([209.85.216.173]:44286) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKi3-0003Ej-UC for qemu-devel@nongnu.org; Sat, 14 May 2011 15:41:08 -0400 Received: by qyk36 with SMTP id 36so895331qyk.4 for ; Sat, 14 May 2011 12:41:07 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Sat, 14 May 2011 22:40:47 +0300 Message-ID: Content-Type: multipart/mixed; boundary=20cf303b404581825e04a3419a6a Subject: [Qemu-devel] [PATCH 07/11] TCG/Sparc64: use stack for TCG temps List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --20cf303b404581825e04a3419a6a Content-Type: text/plain; charset=UTF-8 Use stack instead of temp_buf array in CPUState for TCG temps. On Sparc64, stack pointer is not aligned but there is a fixed bias of 2047, so don't try to enforce alignment. Signed-off-by: Blue Swirl --- tcg/sparc/tcg-target.c | 7 ++++--- tcg/tcg.c | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c index 3dd3696..1a3969a 100644 --- a/tcg/sparc/tcg-target.c +++ b/tcg/sparc/tcg-target.c @@ -693,8 +693,11 @@ static void tcg_out_setcond2_i32(TCGContext *s, TCGCond cond, TCGArg ret, /* Generate global QEMU prologue and epilogue code */ static void tcg_target_qemu_prologue(TCGContext *s) { + tcg_set_frame(s, TCG_REG_I6, TCG_TARGET_CALL_STACK_OFFSET, + CPU_TEMP_BUF_NLONGS * (int)sizeof(long)); tcg_out32(s, SAVE | INSN_RD(TCG_REG_O6) | INSN_RS1(TCG_REG_O6) | - INSN_IMM13(-TCG_TARGET_STACK_MINFRAME)); + INSN_IMM13(-(TCG_TARGET_STACK_MINFRAME + + CPU_TEMP_BUF_NLONGS * (int)sizeof(long)))); tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I0) | INSN_RS2(TCG_REG_G0)); tcg_out_nop(s); @@ -1566,6 +1569,4 @@ static void tcg_target_init(TCGContext *s) tcg_regset_set_reg(s->reserved_regs, TCG_REG_O6); tcg_regset_set_reg(s->reserved_regs, TCG_REG_O7); tcg_add_target_add_op_defs(sparc_op_defs); - tcg_set_frame(s, TCG_AREG0, offsetof(CPUState, temp_buf), - CPU_TEMP_BUF_NLONGS * sizeof(long)); } diff --git a/tcg/tcg.c b/tcg/tcg.c index 75972c3..82316ab 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1434,9 +1434,11 @@ static void temp_allocate_frame(TCGContext *s, int temp) { TCGTemp *ts; ts = &s->temps[temp]; +#ifndef __sparc_v9__ /* Sparc64 stack is accessed with offset of 2047 */ s->current_frame_offset = (s->current_frame_offset + (tcg_target_long)sizeof(tcg_target_long) - 1) & ~(sizeof(tcg_target_long) - 1); +#endif if (s->current_frame_offset + (tcg_target_long)sizeof(tcg_target_long) > s->frame_end) { tcg_abort(); -- 1.6.2.4 --20cf303b404581825e04a3419a6a Content-Type: text/x-diff; charset=US-ASCII; name="0007-TCG-Sparc64-use-stack-for-TCG-temps.patch" Content-Disposition: attachment; filename="0007-TCG-Sparc64-use-stack-for-TCG-temps.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnoylrbd0 RnJvbSBhYmNmMTMwMGI0MGY0NGFjZjYyYmQyMTEyNDEyZDgyMWE4ZDk3NmMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8YWJjZjEzMDBiNDBmNDRhY2Y2MmJkMjExMjQxMmQ4 MjFhOGQ5NzZjMS4xMzA1NDAxNzUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KSW4tUmVwbHkt VG86IDw2ZTIxZGY4ZTM2OTM4OGEzMTUyZGNjN2RhMzA0MzFjNjcyZTFlZTM3LjEzMDU0MDE3NTAu Z2l0LmJsYXV3aXJiZWxAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8NmUyMWRmOGUzNjkzODhhMzE1 MmRjYzdkYTMwNDMxYzY3MmUxZWUzNy4xMzA1NDAxNzUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNv bT4KRnJvbTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTQg TWF5IDIwMTEgMTc6MDY6NTYgKzAwMDAKU3ViamVjdDogW1BBVENIIDA3LzExXSBUQ0cvU3BhcmM2 NDogdXNlIHN0YWNrIGZvciBUQ0cgdGVtcHMKClVzZSBzdGFjayBpbnN0ZWFkIG9mIHRlbXBfYnVm IGFycmF5IGluIENQVVN0YXRlIGZvciBUQ0cgdGVtcHMuCgpPbiBTcGFyYzY0LCBzdGFjayBwb2lu dGVyIGlzIG5vdCBhbGlnbmVkIGJ1dCB0aGVyZSBpcyBhIGZpeGVkIGJpYXMgb2YgMjA0NywKc28g ZG9uJ3QgdHJ5IHRvIGVuZm9yY2UgYWxpZ25tZW50LgoKU2lnbmVkLW9mZi1ieTogQmx1ZSBTd2ly bCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+Ci0tLQogdGNnL3NwYXJjL3RjZy10YXJnZXQuYyB8ICAg IDcgKysrKy0tLQogdGNnL3RjZy5jICAgICAgICAgICAgICB8ICAgIDIgKysKIDIgZmlsZXMgY2hh bmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3RjZy9z cGFyYy90Y2ctdGFyZ2V0LmMgYi90Y2cvc3BhcmMvdGNnLXRhcmdldC5jCmluZGV4IDNkZDM2OTYu LjFhMzk2OWEgMTAwNjQ0Ci0tLSBhL3RjZy9zcGFyYy90Y2ctdGFyZ2V0LmMKKysrIGIvdGNnL3Nw YXJjL3RjZy10YXJnZXQuYwpAQCAtNjkzLDggKzY5MywxMSBAQCBzdGF0aWMgdm9pZCB0Y2dfb3V0 X3NldGNvbmQyX2kzMihUQ0dDb250ZXh0ICpzLCBUQ0dDb25kIGNvbmQsIFRDR0FyZyByZXQsCiAv KiBHZW5lcmF0ZSBnbG9iYWwgUUVNVSBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUgY29kZSAqLwogc3Rh dGljIHZvaWQgdGNnX3RhcmdldF9xZW11X3Byb2xvZ3VlKFRDR0NvbnRleHQgKnMpCiB7CisgICAg dGNnX3NldF9mcmFtZShzLCBUQ0dfUkVHX0k2LCBUQ0dfVEFSR0VUX0NBTExfU1RBQ0tfT0ZGU0VU LAorICAgICAgICAgICAgICAgICAgQ1BVX1RFTVBfQlVGX05MT05HUyAqIChpbnQpc2l6ZW9mKGxv bmcpKTsKICAgICB0Y2dfb3V0MzIocywgU0FWRSB8IElOU05fUkQoVENHX1JFR19PNikgfCBJTlNO X1JTMShUQ0dfUkVHX082KSB8Ci0gICAgICAgICAgICAgIElOU05fSU1NMTMoLVRDR19UQVJHRVRf U1RBQ0tfTUlORlJBTUUpKTsKKyAgICAgICAgICAgICAgSU5TTl9JTU0xMygtKFRDR19UQVJHRVRf U1RBQ0tfTUlORlJBTUUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX1RFTVBfQlVG X05MT05HUyAqIChpbnQpc2l6ZW9mKGxvbmcpKSkpOwogICAgIHRjZ19vdXQzMihzLCBKTVBMIHwg SU5TTl9SRChUQ0dfUkVHX0cwKSB8IElOU05fUlMxKFRDR19SRUdfSTApIHwKICAgICAgICAgICAg ICAgSU5TTl9SUzIoVENHX1JFR19HMCkpOwogICAgIHRjZ19vdXRfbm9wKHMpOwpAQCAtMTU2Niw2 ICsxNTY5LDQgQEAgc3RhdGljIHZvaWQgdGNnX3RhcmdldF9pbml0KFRDR0NvbnRleHQgKnMpCiAg ICAgdGNnX3JlZ3NldF9zZXRfcmVnKHMtPnJlc2VydmVkX3JlZ3MsIFRDR19SRUdfTzYpOwogICAg IHRjZ19yZWdzZXRfc2V0X3JlZyhzLT5yZXNlcnZlZF9yZWdzLCBUQ0dfUkVHX083KTsKICAgICB0 Y2dfYWRkX3RhcmdldF9hZGRfb3BfZGVmcyhzcGFyY19vcF9kZWZzKTsKLSAgICB0Y2dfc2V0X2Zy YW1lKHMsIFRDR19BUkVHMCwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHRlbXBfYnVmKSwKLSAgICAgICAg ICAgICAgICAgIENQVV9URU1QX0JVRl9OTE9OR1MgKiBzaXplb2YobG9uZykpOwogfQpkaWZmIC0t Z2l0IGEvdGNnL3RjZy5jIGIvdGNnL3RjZy5jCmluZGV4IDc1OTcyYzMuLjgyMzE2YWIgMTAwNjQ0 Ci0tLSBhL3RjZy90Y2cuYworKysgYi90Y2cvdGNnLmMKQEAgLTE0MzQsOSArMTQzNCwxMSBAQCBz dGF0aWMgdm9pZCB0ZW1wX2FsbG9jYXRlX2ZyYW1lKFRDR0NvbnRleHQgKnMsIGludCB0ZW1wKQog ewogICAgIFRDR1RlbXAgKnRzOwogICAgIHRzID0gJnMtPnRlbXBzW3RlbXBdOworI2lmbmRlZiBf X3NwYXJjX3Y5X18gLyogU3BhcmM2NCBzdGFjayBpcyBhY2Nlc3NlZCB3aXRoIG9mZnNldCBvZiAy MDQ3ICovCiAgICAgcy0+Y3VycmVudF9mcmFtZV9vZmZzZXQgPSAocy0+Y3VycmVudF9mcmFtZV9v ZmZzZXQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0Y2dfdGFyZ2V0X2xvbmcp c2l6ZW9mKHRjZ190YXJnZXRfbG9uZykgLSAxKSAmCiAgICAgICAgIH4oc2l6ZW9mKHRjZ190YXJn ZXRfbG9uZykgLSAxKTsKKyNlbmRpZgogICAgIGlmIChzLT5jdXJyZW50X2ZyYW1lX29mZnNldCAr ICh0Y2dfdGFyZ2V0X2xvbmcpc2l6ZW9mKHRjZ190YXJnZXRfbG9uZykgPgogICAgICAgICBzLT5m cmFtZV9lbmQpIHsKICAgICAgICAgdGNnX2Fib3J0KCk7Ci0tIAoxLjcuMi41Cgo= --20cf303b404581825e04a3419a6a--