From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41348) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKg1-0005Kg-GP for qemu-devel@nongnu.org; Sat, 14 May 2011 15:39:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QLKg0-0002jv-Iq for qemu-devel@nongnu.org; Sat, 14 May 2011 15:39:01 -0400 Received: from mail-qy0-f180.google.com ([209.85.216.180]:36643) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKg0-0002jq-Ds for qemu-devel@nongnu.org; Sat, 14 May 2011 15:39:00 -0400 Received: by qyk10 with SMTP id 10so2072033qyk.4 for ; Sat, 14 May 2011 12:39:00 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Sat, 14 May 2011 22:38:40 +0300 Message-ID: Content-Type: multipart/mixed; boundary=20cf303347dbedaa6c04a341929f Subject: [Qemu-devel] [PATCH 06/11] TCG/x86: use stack for TCG temps List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --20cf303347dbedaa6c04a341929f Content-Type: text/plain; charset=UTF-8 Use stack instead of temp_buf array in CPUState for TCG temps. Signed-off-by: Blue Swirl --- tcg/i386/tcg-target.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index 01747f3..0e168ea 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -1918,19 +1918,22 @@ static void tcg_target_qemu_prologue(TCGContext *s) /* TB prologue */ - /* Save all callee saved registers. */ - for (i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { - tcg_out_push(s, tcg_target_callee_save_regs[i]); - } - - /* Reserve some stack space. */ + /* Reserve some stack space, also for TCG temps. */ push_size = 1 + ARRAY_SIZE(tcg_target_callee_save_regs); push_size *= TCG_TARGET_REG_BITS / 8; - frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE + + CPU_TEMP_BUF_NLONGS * sizeof(long); frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & ~(TCG_TARGET_STACK_ALIGN - 1); stack_addend = frame_size - push_size; + tcg_set_frame(s, TCG_REG_ESP, 0, CPU_TEMP_BUF_NLONGS * sizeof(long)); + + /* Save all callee saved registers. */ + for (i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_push(s, tcg_target_callee_save_regs[i]); + } + tcg_out_addi(s, TCG_REG_ESP, -stack_addend); /* jmp *tb. */ @@ -1979,6 +1982,4 @@ static void tcg_target_init(TCGContext *s) tcg_regset_set_reg(s->reserved_regs, TCG_REG_ESP); tcg_add_target_add_op_defs(x86_op_defs); - tcg_set_frame(s, TCG_AREG0, offsetof(CPUState, temp_buf), - CPU_TEMP_BUF_NLONGS * sizeof(long)); } -- 1.6.2.4 --20cf303347dbedaa6c04a341929f Content-Type: text/x-diff; charset=US-ASCII; name="0006-TCG-x86-use-stack-for-TCG-temps.patch" Content-Disposition: attachment; filename="0006-TCG-x86-use-stack-for-TCG-temps.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnoyl8kk0 RnJvbSBlYmMxNDUzN2IzYWJkNGEyODM2MGQyNWU0MmUzZGJlMWM5YjJjYjE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8ZWJjMTQ1MzdiM2FiZDRhMjgzNjBkMjVlNDJlM2Ri ZTFjOWIyY2IxNC4xMzA1NDAxNzUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KSW4tUmVwbHkt VG86IDw2ZTIxZGY4ZTM2OTM4OGEzMTUyZGNjN2RhMzA0MzFjNjcyZTFlZTM3LjEzMDU0MDE3NTAu Z2l0LmJsYXV3aXJiZWxAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8NmUyMWRmOGUzNjkzODhhMzE1 MmRjYzdkYTMwNDMxYzY3MmUxZWUzNy4xMzA1NDAxNzUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNv bT4KRnJvbTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTQg TWF5IDIwMTEgMTM6MTQ6NDUgKzAwMDAKU3ViamVjdDogW1BBVENIIDA2LzExXSBUQ0cveDg2OiB1 c2Ugc3RhY2sgZm9yIFRDRyB0ZW1wcwoKVXNlIHN0YWNrIGluc3RlYWQgb2YgdGVtcF9idWYgYXJy YXkgaW4gQ1BVU3RhdGUgZm9yIFRDRwp0ZW1wcy4KClNpZ25lZC1vZmYtYnk6IEJsdWUgU3dpcmwg PGJsYXV3aXJiZWxAZ21haWwuY29tPgotLS0KIHRjZy9pMzg2L3RjZy10YXJnZXQuYyB8ICAgMTkg KysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3RjZy9pMzg2L3RjZy10YXJnZXQuYyBiL3RjZy9p Mzg2L3RjZy10YXJnZXQuYwppbmRleCAwMTc0N2YzLi4wZTE2OGVhIDEwMDY0NAotLS0gYS90Y2cv aTM4Ni90Y2ctdGFyZ2V0LmMKKysrIGIvdGNnL2kzODYvdGNnLXRhcmdldC5jCkBAIC0xOTE4LDE5 ICsxOTE4LDIyIEBAIHN0YXRpYyB2b2lkIHRjZ190YXJnZXRfcWVtdV9wcm9sb2d1ZShUQ0dDb250 ZXh0ICpzKQogCiAgICAgLyogVEIgcHJvbG9ndWUgKi8KIAotICAgIC8qIFNhdmUgYWxsIGNhbGxl ZSBzYXZlZCByZWdpc3RlcnMuICAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRj Z190YXJnZXRfY2FsbGVlX3NhdmVfcmVncyk7IGkrKykgewotICAgICAgICB0Y2dfb3V0X3B1c2go cywgdGNnX3RhcmdldF9jYWxsZWVfc2F2ZV9yZWdzW2ldKTsKLSAgICB9Ci0KLSAgICAvKiBSZXNl cnZlIHNvbWUgc3RhY2sgc3BhY2UuICAqLworICAgIC8qIFJlc2VydmUgc29tZSBzdGFjayBzcGFj ZSwgYWxzbyBmb3IgVENHIHRlbXBzLiAgKi8KICAgICBwdXNoX3NpemUgPSAxICsgQVJSQVlfU0la RSh0Y2dfdGFyZ2V0X2NhbGxlZV9zYXZlX3JlZ3MpOwogICAgIHB1c2hfc2l6ZSAqPSBUQ0dfVEFS R0VUX1JFR19CSVRTIC8gODsKIAotICAgIGZyYW1lX3NpemUgPSBwdXNoX3NpemUgKyBUQ0dfU1RB VElDX0NBTExfQVJHU19TSVpFOworICAgIGZyYW1lX3NpemUgPSBwdXNoX3NpemUgKyBUQ0dfU1RB VElDX0NBTExfQVJHU19TSVpFICsKKyAgICAgICAgQ1BVX1RFTVBfQlVGX05MT05HUyAqIHNpemVv Zihsb25nKTsKICAgICBmcmFtZV9zaXplID0gKGZyYW1lX3NpemUgKyBUQ0dfVEFSR0VUX1NUQUNL X0FMSUdOIC0gMSkgJgogICAgICAgICB+KFRDR19UQVJHRVRfU1RBQ0tfQUxJR04gLSAxKTsKICAg ICBzdGFja19hZGRlbmQgPSBmcmFtZV9zaXplIC0gcHVzaF9zaXplOworICAgIHRjZ19zZXRfZnJh bWUocywgVENHX1JFR19FU1AsIDAsIENQVV9URU1QX0JVRl9OTE9OR1MgKiBzaXplb2YobG9uZykp OworCisgICAgLyogU2F2ZSBhbGwgY2FsbGVlIHNhdmVkIHJlZ2lzdGVycy4gICovCisgICAgZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGNnX3RhcmdldF9jYWxsZWVfc2F2ZV9yZWdzKTsgaSsr KSB7CisgICAgICAgIHRjZ19vdXRfcHVzaChzLCB0Y2dfdGFyZ2V0X2NhbGxlZV9zYXZlX3JlZ3Nb aV0pOworICAgIH0KKwogICAgIHRjZ19vdXRfYWRkaShzLCBUQ0dfUkVHX0VTUCwgLXN0YWNrX2Fk ZGVuZCk7CiAKICAgICAvKiBqbXAgKnRiLiAgKi8KQEAgLTE5NzksNiArMTk4Miw0IEBAIHN0YXRp YyB2b2lkIHRjZ190YXJnZXRfaW5pdChUQ0dDb250ZXh0ICpzKQogICAgIHRjZ19yZWdzZXRfc2V0 X3JlZyhzLT5yZXNlcnZlZF9yZWdzLCBUQ0dfUkVHX0VTUCk7CiAKICAgICB0Y2dfYWRkX3Rhcmdl dF9hZGRfb3BfZGVmcyh4ODZfb3BfZGVmcyk7Ci0gICAgdGNnX3NldF9mcmFtZShzLCBUQ0dfQVJF RzAsIG9mZnNldG9mKENQVVN0YXRlLCB0ZW1wX2J1ZiksCi0gICAgICAgICAgICAgICAgICBDUFVf VEVNUF9CVUZfTkxPTkdTICogc2l6ZW9mKGxvbmcpKTsKIH0KLS0gCjEuNy4yLjUKCg== --20cf303347dbedaa6c04a341929f--