From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 62655 invoked by alias); 25 Aug 2017 17:43:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 60540 invoked by uid 89); 25 Aug 2017 17:43:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-yw0-f171.google.com Received: from mail-yw0-f171.google.com (HELO mail-yw0-f171.google.com) (209.85.161.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 25 Aug 2017 17:43:43 +0000 Received: by mail-yw0-f171.google.com with SMTP id s143so2873277ywg.0 for ; Fri, 25 Aug 2017 10:43:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=pBcdPH6nwu4XD88Cpp3QwqwkvLCQ7R3sk6MR3TnJpIc=; b=GAAwyPsH5rQ9jq4hSA0htBNrTp71hekbI3oHCsz+HWeiEbkBay65RXu4nsymdazCl6 3s9wKmK8p5zQfVdNUiF4k7tqBkEce00mjiTdW7fRkRpsF54gHifD2muOPlypYz3jgInn QuB9N2rPMfgQadLLNNddQNuZ4Ran4X5xUWjGdfE2uIXneBuKIAJgMTt92szt/sXh5lZr WrnUwpwtNW+k9N1547CdZXC72WIlsTZXKK8EI5X+xD4D7JRKO7pCgconI4qEz/8JwbB2 ijV2WyZG1aVEi9ptUKafOv21dOEgNJwSt8xN92VwbdMx0HDoimfgKzPsBdwKWwfVYmUM JVmg== X-Gm-Message-State: AHYfb5gSr9gmHwB3XVx1bsnAyfM1dZzT1QD6Tgb9uJuUh+SaZy6DB8jQ sy0gIzMHbucP3dcbeLyow9Zl0Qhwh4s8Rlo= X-Received: by 10.13.233.65 with SMTP id s62mr8442459ywe.226.1503683021883; Fri, 25 Aug 2017 10:43:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.46.201 with HTTP; Fri, 25 Aug 2017 10:43:41 -0700 (PDT) In-Reply-To: <3df367f9-f987-f84a-5cc9-bc4c7d4c1ecc@arm.com> References: <1487696064-3233-1-git-send-email-charles.baylis@linaro.org> <1487696064-3233-3-git-send-email-charles.baylis@linaro.org> <3df367f9-f987-f84a-5cc9-bc4c7d4c1ecc@arm.com> From: Charles Baylis Date: Fri, 25 Aug 2017 19:05:00 -0000 Message-ID: Subject: Re: [PATCH 2/2] [ARM] Add table of costs for AAarch32 addressing modes. To: "Richard Earnshaw (lists)" Cc: Ramana Radhakrishnan , Kyrylo Tkachov , Richard Earnshaw , GCC Patches Content-Type: multipart/mixed; boundary="94eb2c07d6145ffd500557977cb7" X-IsSubscribed: yes X-SW-Source: 2017-08/txt/msg01523.txt.bz2 --94eb2c07d6145ffd500557977cb7 Content-Type: text/plain; charset="UTF-8" Content-length: 5067 On 9 June 2017 at 15:13, Richard Earnshaw (lists) wrote: > On 21/02/17 16:54, charles.baylis@linaro.org wrote: >> From: Charles Baylis >> >> This patch adds support for modelling the varying costs of >> different addressing modes. The generic cost table treats >> all addressing modes as having equal cost. The cost table >> for Cortex-A57 is derived from http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimization_Guide_external.pdf >> and treats addressing modes with write-back as having a >> cost equal to one additional instruction. >> >> gcc/ChangeLog: >> >> Charles Baylis >> >> * config/arm/aarch-common-protos.h (enum arm_addr_mode_op): New. >> (struct addr_mode_cost_table): New. >> (struct cpu_cost_table): Add pointer to an addr_mode_cost_table. >> * config/arm/aarch-cost-tables.h: (generic_addr_mode_costs): New. >> (generic_extra_costs) Initialise aarch32_addr_mode. >> (cortexa53_extra_costs) Likewise. >> (addr_mode_costs_cortexa57) New. >> (cortexa57_extra_costs) Initialise aarch32_addr_mode. >> (exynosm1_extra_costs) Likewise. >> (xgene1_extra_costs) Likewise. >> (qdf24xx_extra_costs) Likewise. >> * config/arm/arm.c (cortexa9_extra_costs) Initialise aarch32_addr_mode. >> (cortexa9_extra_costs) Likewise. >> (cortexa8_extra_costs) Likewise. >> (cortexa5_extra_costs) Likewise. >> (cortexa7_extra_costs) Likewise. >> (cortexa12_extra_costs) Likewise. >> (cortexv7m_extra_costs) Likewise. >> (arm_mem_costs): Use table lookup to calculate cost of addressing >> mode. >> >> Change-Id: If71bd7c4f4bb876c5ed82dc28791130efb8bf89e >> --- >> gcc/config/arm/aarch-common-protos.h | 16 +++++++++++ >> gcc/config/arm/aarch-cost-tables.h | 54 ++++++++++++++++++++++++++++++---- >> gcc/config/arm/arm.c | 56 ++++++++++++++++++++++++++++++------ >> 3 files changed, 113 insertions(+), 13 deletions(-) >> >> diff --git a/gcc/config/arm/aarch-common-protos.h b/gcc/config/arm/aarch-common-protos.h >> index 7c2bb4c..f6fcc94 100644 >> --- a/gcc/config/arm/aarch-common-protos.h >> +++ b/gcc/config/arm/aarch-common-protos.h >> @@ -130,6 +130,21 @@ struct vector_cost_table >> const int alu; >> }; >> >> +enum arm_addr_mode_op >> +{ >> + AMO_DEFAULT, >> + AMO_NO_WB, >> + AMO_WB, >> + AMO_MAX /* for array size */ > > Comment style: Capital letter at start, full stop and two spaces at the end. Done. > The enum and structure below should have some comments explaining what > they are for. Done. >> +const struct addr_mode_cost_table generic_addr_mode_costs = >> +{ >> + /* int */ >> + { 0, 0, 0 }, > > Elements need to be commented, otherwise minor changes to the contents > of the arrays is hard to update and maintain. Done. >> + /* Addressing mode */ > > Comment style. Done. >> - /* TODO: Add table-driven costs for addressing modes. */ >> + arm_addr_mode_op op_type; >> + switch (GET_CODE(XEXP (x, 0))) >> + { >> + case REG: >> + default: >> + op_type = AMO_DEFAULT; > > Why would REG and default share the same cost? Presumably default is > too complex to recognize, but then it's unlikely to be cheap. Default covers literals in various forms of RTL, for which the cost is the same as regular, and PIC, which is handled in the original code above this section. >> + break; >> + case PLUS: >> + case MINUS: >> + op_type = AMO_NO_WB; > > GCC doesn't support MINUS in addresses, even though the architecture > could in theory handle this. I've noted that in a comment, but kept the "case MINUS:" in place. > Also, I think you need a different cost for scaled offset addressing, > and possibly even for different scaling factors and types of scaling. ... see below: >> + break; >> + case PRE_INC: >> + case PRE_DEC: >> + case POST_INC: >> + case POST_DEC: >> + case PRE_MODIFY: >> + case POST_MODIFY: >> + op_type = AMO_WB; > > Pre and post might also need separate entries (plus further entries for > scaling). A post operation might happen in parallel with the data > fetch, while a pre operation must happen before the address can be sent > to the load/store pipe. The {DEFAULT, NO_WB, WB} range is also Ramana's requested design. I think this is OK because it is sufficient to describe the currently publicly documented microarchitectures, and the structure is readily extensible if future cores require more detailed modelling. Expanding the range of AMO_* entries in the array makes the tables more unwieldy for no immediate benefit. >> + break; >> + } > > blank line between the switch block and the subsequent statements. > Also, the following needs to laid out in GNU style. Done. This version of the patch also moves the Cortex-A57 tuning (which was present in the earlier version) into a separate patch. Discussion of that in a follow-up post. Updated patch attached --94eb2c07d6145ffd500557977cb7 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-ARM-Add-table-of-costs-for-AAarch32-addressing-modes.patch" Content-Disposition: attachment; filename="0002-ARM-Add-table-of-costs-for-AAarch32-addressing-modes.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j6s5mrsn0 Content-length: 10224 RnJvbSBiNjk2ODgwNGYzN2ZhOTk5YzA5MGQ3MzE2YWI1OWY0MGIxNGI1ZjQ5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFybGVzIEJheWxp cyA8Y2hhcmxlcy5iYXlsaXNAbGluYXJvLm9yZz4KRGF0ZTogV2VkLCA4IEZl YiAyMDE3IDE2OjUyOjQwICswMDAwClN1YmplY3Q6IFtQQVRDSCAyLzNdIFtB Uk1dIEFkZCB0YWJsZSBvZiBjb3N0cyBmb3IgQUFhcmNoMzIgYWRkcmVzc2lu ZyBtb2Rlcy4KClRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtb2RlbGxp bmcgdGhlIHZhcnlpbmcgY29zdHMgb2YKZGlmZmVyZW50IGFkZHJlc3Npbmcg bW9kZXMuIFRoZSBnZW5lcmljIGNvc3QgdGFibGUgdHJlYXRzCmFsbCBhZGRy ZXNzaW5nIG1vZGVzIGFzIGhhdmluZyBlcXVhbCBjb3N0LgoKZ2NjL0NoYW5n ZUxvZzoKCjxkYXRlPiAgQ2hhcmxlcyBCYXlsaXMgIDxjaGFybGVzLmJheWxp c0BsaW5hcm8ub3JnPgoKCSogY29uZmlnL2FybS9hYXJjaC1jb21tb24tcHJv dG9zLmggKGVudW0gYXJtX2FkZHJfbW9kZV9vcCk6IE5ldy4KCShzdHJ1Y3Qg YWRkcl9tb2RlX2Nvc3RfdGFibGUpOiBOZXcuCgkoc3RydWN0IGNwdV9jb3N0 X3RhYmxlKTogQWRkIHBvaW50ZXIgdG8gYW4gYWRkcl9tb2RlX2Nvc3RfdGFi bGUuCgkqIGNvbmZpZy9hcm0vYWFyY2gtY29zdC10YWJsZXMuaDogKGdlbmVy aWNfYWRkcl9tb2RlX2Nvc3RzKTogTmV3LgoJKGdlbmVyaWNfZXh0cmFfY29z dHMpIEluaXRpYWxpc2UgYWFyY2gzMl9hZGRyX21vZGUuCgkoY29ydGV4YTUz X2V4dHJhX2Nvc3RzKSBMaWtld2lzZS4KCShjb3J0ZXhhNTdfZXh0cmFfY29z dHMpIExpa2V3aXNlLgoJKGV4eW5vc20xX2V4dHJhX2Nvc3RzKSBMaWtld2lz ZS4KCSh4Z2VuZTFfZXh0cmFfY29zdHMpIExpa2V3aXNlLgoJKHFkZjI0eHhf ZXh0cmFfY29zdHMpIExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIChj b3J0ZXhhOV9leHRyYV9jb3N0cykgSW5pdGlhbGlzZSBhYXJjaDMyX2FkZHJf bW9kZS4KCShjb3J0ZXhhOV9leHRyYV9jb3N0cykgTGlrZXdpc2UuCgkoY29y dGV4YThfZXh0cmFfY29zdHMpIExpa2V3aXNlLgoJKGNvcnRleGE1X2V4dHJh X2Nvc3RzKSBMaWtld2lzZS4KCShjb3J0ZXhhN19leHRyYV9jb3N0cykgTGlr ZXdpc2UuCgkoY29ydGV4YTEyX2V4dHJhX2Nvc3RzKSBMaWtld2lzZS4KCShj b3J0ZXh2N21fZXh0cmFfY29zdHMpIExpa2V3aXNlLgoJKGFybV9tZW1fY29z dHMpOiBVc2UgdGFibGUgbG9va3VwIHRvIGNhbGN1bGF0ZSBjb3N0IG9mIGFk ZHJlc3NpbmcKCW1vZGUuCgpDaGFuZ2UtSWQ6IElmNzFiZDdjNGY0YmI4NzZj NWVkODJkYzI4NzkxMTMwZWZiOGJmODllCi0tLQogZ2NjL2NvbmZpZy9hcm0v YWFyY2gtY29tbW9uLXByb3Rvcy5oIHwgMjAgKysrKysrKysrKysrKwogZ2Nj L2NvbmZpZy9hcm0vYWFyY2gtY29zdC10YWJsZXMuaCAgIHwgMzggKysrKysr KysrKysrKysrKysrKy0tLS0KIGdjYy9jb25maWcvYXJtL2FybS5jICAgICAg ICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwg MTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0v YWFyY2gtY29tbW9uLXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9hcm0vYWFyY2gt Y29tbW9uLXByb3Rvcy5oCmluZGV4IGE1MTEyMTEuLjc4ODdjOTIgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcvYXJtL2FhcmNoLWNvbW1vbi1wcm90b3MuaAor KysgYi9nY2MvY29uZmlnL2FybS9hYXJjaC1jb21tb24tcHJvdG9zLmgKQEAg LTEzMSw2ICsxMzEsMjUgQEAgc3RydWN0IHZlY3Rvcl9jb3N0X3RhYmxlCiAg IGNvbnN0IGludCBhbHU7CiB9OwogCisvKiBBZGRyZXNzaW5nIG1vZGUgb3Bl cmF0aW9ucy4gIFVzZWQgdG8gaW5kZXggdGFibGVzIGluIHN0cnVjdAorICAg YWRkcl9tb2RlX2Nvc3RfdGFibGUuICAqLworZW51bSBhcm1fYWRkcl9tb2Rl X29wCit7CisgICBBTU9fREVGQVVMVCwKKyAgIEFNT19OT19XQiwJLyogT2Zm c2V0IHdpdGggbm8gd3JpdGViYWNrLiAgKi8KKyAgIEFNT19XQiwJLyogT2Zm c2V0IHdpdGggd3JpdGViYWNrLiAgKi8KKyAgIEFNT19NQVgJLyogRm9yIGFy cmF5IHNpemUuICAqLworfTsKKworLyogVGFibGUgb2YgYWRkaXRpb25hbCBj b3N0cyB3aGVuIHVzaW5nIGFkZHJlc3NpbmcgbW9kZXMgZm9yIGVhY2gKKyAg IGFjY2VzcyB0eXBlLiAgKi8KK3N0cnVjdCBhZGRyX21vZGVfY29zdF90YWJs ZQoreworICAgY29uc3QgaW50IGludGVnZXJbQU1PX01BWF07CisgICBjb25z dCBpbnQgZnBbQU1PX01BWF07CisgICBjb25zdCBpbnQgdmVjdG9yW0FNT19N QVhdOworfTsKKwogc3RydWN0IGNwdV9jb3N0X3RhYmxlCiB7CiAgIGNvbnN0 IHN0cnVjdCBhbHVfY29zdF90YWJsZSBhbHU7CkBAIC0xMzgsNiArMTU3LDcg QEAgc3RydWN0IGNwdV9jb3N0X3RhYmxlCiAgIGNvbnN0IHN0cnVjdCBtZW1f Y29zdF90YWJsZSBsZHN0OwogICBjb25zdCBzdHJ1Y3QgZnBfY29zdF90YWJs ZSBmcFsyXTsgLyogU0Ztb2RlIGFuZCBERm1vZGUuICAqLwogICBjb25zdCBz dHJ1Y3QgdmVjdG9yX2Nvc3RfdGFibGUgdmVjdDsKKyAgY29uc3Qgc3RydWN0 IGFkZHJfbW9kZV9jb3N0X3RhYmxlICphYXJjaDMyX2FkZHJfbW9kZTsKIH07 CiAKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYWFyY2gtY29zdC10 YWJsZXMuaCBiL2djYy9jb25maWcvYXJtL2FhcmNoLWNvc3QtdGFibGVzLmgK aW5kZXggZGM2N2ZhZi4uYjE2YTk1YyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9hcm0vYWFyY2gtY29zdC10YWJsZXMuaAorKysgYi9nY2MvY29uZmlnL2Fy bS9hYXJjaC1jb3N0LXRhYmxlcy5oCkBAIC0yMiw2ICsyMiwyOSBAQAogI2lm bmRlZiBHQ0NfQUFSQ0hfQ09TVF9UQUJMRVNfSAogI2RlZmluZSBHQ0NfQUFS Q0hfQ09TVF9UQUJMRVNfSAogCitjb25zdCBzdHJ1Y3QgYWRkcl9tb2RlX2Nv c3RfdGFibGUgZ2VuZXJpY19hZGRyX21vZGVfY29zdHMgPQoreworICAvKiBp bnQuICAqLworICB7CisgICAgMCwJLyogQU1PX0RFRkFVTFQuICAqLworICAg IDAsCS8qIEFNT19OT19XQi4gICovCisgICAgMAkvKiBBTU9fV0IuICAqLwor ICB9LAorICAvKiBmbG9hdC4gICovCisgIHsKKyAgICAwLAkvKiBBTU9fREVG QVVMVC4gICovCisgICAgMCwJLyogQU1PX05PX1dCLiAgKi8KKyAgICAwCS8q IEFNT19XQi4gICovCisgIH0sCisgIC8qIHZlY3Rvci4gICovCisgIHsKKyAg ICAwLAkvKiBBTU9fREVGQVVMVC4gICovCisgICAgMCwJLyogQU1PX05PX1dC LiAgKi8KKyAgICAwCS8qIEFNT19XQi4gICovCisgIH0KK307CisKKwogY29u c3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxlIGdlbmVyaWNfZXh0cmFfY29zdHMg PQogewogICAvKiBBTFUgKi8KQEAgLTEyMiw3ICsxNDUsOCBAQCBjb25zdCBz dHJ1Y3QgY3B1X2Nvc3RfdGFibGUgZ2VuZXJpY19leHRyYV9jb3N0cyA9CiAg IC8qIFZlY3RvciAqLwogICB7CiAgICAgQ09TVFNfTl9JTlNOUyAoMSkJLyog YWx1LiAgKi8KLSAgfQorICB9LAorICAmZ2VuZXJpY19hZGRyX21vZGVfY29z dHMJLyogYWFyY2gzMl9hZGRyX21vZGUuICAqLwogfTsKIAogY29uc3Qgc3Ry dWN0IGNwdV9jb3N0X3RhYmxlIGNvcnRleGE1M19leHRyYV9jb3N0cyA9CkBA IC0yMjUsNyArMjQ5LDggQEAgY29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxl IGNvcnRleGE1M19leHRyYV9jb3N0cyA9CiAgIC8qIFZlY3RvciAqLwogICB7 CiAgICAgQ09TVFNfTl9JTlNOUyAoMSkJLyogYWx1LiAgKi8KLSAgfQorICB9 LAorICAmZ2VuZXJpY19hZGRyX21vZGVfY29zdHMJLyogYWFyY2gzMl9hZGRy X21vZGUuICAqLwogfTsKIAogY29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxl IGNvcnRleGE1N19leHRyYV9jb3N0cyA9CkBAIC0zMjgsNyArMzUzLDggQEAg Y29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxlIGNvcnRleGE1N19leHRyYV9j b3N0cyA9CiAgIC8qIFZlY3RvciAqLwogICB7CiAgICAgQ09TVFNfTl9JTlNO UyAoMSkgIC8qIGFsdS4gICovCi0gIH0KKyAgfSwKKyAgJmdlbmVyaWNfYWRk cl9tb2RlX2Nvc3RzCS8qIGFhcmNoMzJfYWRkcl9tb2RlLiAgKi8KIH07CiAK IGNvbnN0IHN0cnVjdCBjcHVfY29zdF90YWJsZSBleHlub3NtMV9leHRyYV9j b3N0cyA9CkBAIC00MzEsNyArNDU3LDggQEAgY29uc3Qgc3RydWN0IGNwdV9j b3N0X3RhYmxlIGV4eW5vc20xX2V4dHJhX2Nvc3RzID0KICAgLyogVmVjdG9y ICovCiAgIHsKICAgICBDT1NUU19OX0lOU05TICgwKSAgLyogYWx1LiAgKi8K LSAgfQorICB9LAorICAmZ2VuZXJpY19hZGRyX21vZGVfY29zdHMJLyogYWFy Y2gzMl9hZGRyX21vZGUuICAqLwogfTsKIAogY29uc3Qgc3RydWN0IGNwdV9j b3N0X3RhYmxlIHhnZW5lMV9leHRyYV9jb3N0cyA9CkBAIC01MzQsNyArNTYx LDggQEAgY29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxlIHhnZW5lMV9leHRy YV9jb3N0cyA9CiAgIC8qIFZlY3RvciAqLwogICB7CiAgICAgQ09TVFNfTl9J TlNOUyAoMikgIC8qIGFsdS4gICovCi0gIH0KKyAgfSwKKyAgJmdlbmVyaWNf YWRkcl9tb2RlX2Nvc3RzCS8qIGFhcmNoMzJfYWRkcl9tb2RlLiAgKi8KIH07 CiAKICNlbmRpZiAvKiBHQ0NfQUFSQ0hfQ09TVF9UQUJMRVNfSCAqLwpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMgYi9nY2MvY29uZmlnL2Fy bS9hcm0uYwppbmRleCAxM2NkNDIxLi5hZTUxNDBjIDEwMDY0NAotLS0gYS9n Y2MvY29uZmlnL2FybS9hcm0uYworKysgYi9nY2MvY29uZmlnL2FybS9hcm0u YwpAQCAtMTExNyw3ICsxMTE3LDggQEAgY29uc3Qgc3RydWN0IGNwdV9jb3N0 X3RhYmxlIGNvcnRleGE5X2V4dHJhX2Nvc3RzID0KICAgLyogVmVjdG9yICov CiAgIHsKICAgICBDT1NUU19OX0lOU05TICgxKQkvKiBhbHUuICAqLwotICB9 CisgIH0sCisgICZnZW5lcmljX2FkZHJfbW9kZV9jb3N0cwkvKiBhYXJjaDMy X2FkZHJfbW9kZS4gICovCiB9OwogCiBjb25zdCBzdHJ1Y3QgY3B1X2Nvc3Rf dGFibGUgY29ydGV4YThfZXh0cmFfY29zdHMgPQpAQCAtMTIyMCw3ICsxMjIx LDggQEAgY29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxlIGNvcnRleGE4X2V4 dHJhX2Nvc3RzID0KICAgLyogVmVjdG9yICovCiAgIHsKICAgICBDT1NUU19O X0lOU05TICgxKQkvKiBhbHUuICAqLwotICB9CisgIH0sCisgICZnZW5lcmlj X2FkZHJfbW9kZV9jb3N0cwkvKiBhYXJjaDMyX2FkZHJfbW9kZS4gICovCiB9 OwogCiBjb25zdCBzdHJ1Y3QgY3B1X2Nvc3RfdGFibGUgY29ydGV4YTVfZXh0 cmFfY29zdHMgPQpAQCAtMTMyNCw3ICsxMzI2LDggQEAgY29uc3Qgc3RydWN0 IGNwdV9jb3N0X3RhYmxlIGNvcnRleGE1X2V4dHJhX2Nvc3RzID0KICAgLyog VmVjdG9yICovCiAgIHsKICAgICBDT1NUU19OX0lOU05TICgxKQkvKiBhbHUu ICAqLwotICB9CisgIH0sCisgICZnZW5lcmljX2FkZHJfbW9kZV9jb3N0cwkv KiBhYXJjaDMyX2FkZHJfbW9kZS4gICovCiB9OwogCiAKQEAgLTE0MjksNyAr MTQzMiw4IEBAIGNvbnN0IHN0cnVjdCBjcHVfY29zdF90YWJsZSBjb3J0ZXhh N19leHRyYV9jb3N0cyA9CiAgIC8qIFZlY3RvciAqLwogICB7CiAgICAgQ09T VFNfTl9JTlNOUyAoMSkJLyogYWx1LiAgKi8KLSAgfQorICB9LAorICAmZ2Vu ZXJpY19hZGRyX21vZGVfY29zdHMJLyogYWFyY2gzMl9hZGRyX21vZGUuICAq LwogfTsKIAogY29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxlIGNvcnRleGEx Ml9leHRyYV9jb3N0cyA9CkBAIC0xNTMyLDcgKzE1MzYsOCBAQCBjb25zdCBz dHJ1Y3QgY3B1X2Nvc3RfdGFibGUgY29ydGV4YTEyX2V4dHJhX2Nvc3RzID0K ICAgLyogVmVjdG9yICovCiAgIHsKICAgICBDT1NUU19OX0lOU05TICgxKQkv KiBhbHUuICAqLwotICB9CisgIH0sCisgICZnZW5lcmljX2FkZHJfbW9kZV9j b3N0cwkvKiBhYXJjaDMyX2FkZHJfbW9kZS4gICovCiB9OwogCiBjb25zdCBz dHJ1Y3QgY3B1X2Nvc3RfdGFibGUgY29ydGV4YTE1X2V4dHJhX2Nvc3RzID0K QEAgLTE2MzUsNyArMTY0MCw4IEBAIGNvbnN0IHN0cnVjdCBjcHVfY29zdF90 YWJsZSBjb3J0ZXhhMTVfZXh0cmFfY29zdHMgPQogICAvKiBWZWN0b3IgKi8K ICAgewogICAgIENPU1RTX05fSU5TTlMgKDEpCS8qIGFsdS4gICovCi0gIH0K KyAgfSwKKyAgJmdlbmVyaWNfYWRkcl9tb2RlX2Nvc3RzCS8qIGFhcmNoMzJf YWRkcl9tb2RlLiAgKi8KIH07CiAKIGNvbnN0IHN0cnVjdCBjcHVfY29zdF90 YWJsZSB2N21fZXh0cmFfY29zdHMgPQpAQCAtMTczOCw3ICsxNzQ0LDggQEAg Y29uc3Qgc3RydWN0IGNwdV9jb3N0X3RhYmxlIHY3bV9leHRyYV9jb3N0cyA9 CiAgIC8qIFZlY3RvciAqLwogICB7CiAgICAgQ09TVFNfTl9JTlNOUyAoMSkJ LyogYWx1LiAgKi8KLSAgfQorICB9LAorICAmZ2VuZXJpY19hZGRyX21vZGVf Y29zdHMJLyogYWFyY2gzMl9hZGRyX21vZGUuICAqLwogfTsKIAogY29uc3Qg c3RydWN0IHR1bmVfcGFyYW1zIGFybV9zbG93bXVsX3R1bmUgPQpAQCAtOTIx OSw3ICs5MjI2LDQyIEBAIGFybV9tZW1fY29zdHMgKHJ0eCB4LCBjb25zdCBz dHJ1Y3QgY3B1X2Nvc3RfdGFibGUgKmV4dHJhX2Nvc3QsCiAgIC8qIENhbGN1 bGF0ZSBjb3N0IG9mIHRoZSBhZGRyZXNzaW5nIG1vZGUuICAqLwogICBpZiAo c3BlZWRfcCkKICAgICB7Ci0gICAgICAvKiBUT0RPOiBBZGQgdGFibGUtZHJp dmVuIGNvc3RzIGZvciBhZGRyZXNzaW5nIG1vZGVzLiAgKFNlZSBwYXRjaCAy KSAqLworICAgICAgYXJtX2FkZHJfbW9kZV9vcCBvcF90eXBlOworICAgICAg c3dpdGNoIChHRVRfQ09ERSAoWEVYUCAoeCwgMCkpKQorCXsKKwlkZWZhdWx0 OgorCWNhc2UgUkVHOgorCSAgb3BfdHlwZSA9IEFNT19ERUZBVUxUOworCSAg YnJlYWs7CisJY2FzZSBNSU5VUzoKKwkgIC8qIE1JTlVTIGRvZXMgbm90IGFw cGVhciBpbiBSVEwsIGJ1dCB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIGl0 LAorCSAgICAgc28gaGFuZGxlIHRoaXMgY2FzZSBkZWZlbnNpdmVseS4gICov CisJICAvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIFBMVVM6CisJICBvcF90 eXBlID0gQU1PX05PX1dCOworCSAgYnJlYWs7CisJY2FzZSBQUkVfSU5DOgor CWNhc2UgUFJFX0RFQzoKKwljYXNlIFBPU1RfSU5DOgorCWNhc2UgUE9TVF9E RUM6CisJY2FzZSBQUkVfTU9ESUZZOgorCWNhc2UgUE9TVF9NT0RJRlk6CisJ ICBvcF90eXBlID0gQU1PX1dCOworCSAgYnJlYWs7CisJfQorCisgICAgICBp ZiAoVkVDVE9SX01PREVfUCAobW9kZSkpCisJeworCSAgKmNvc3QgKz0gZXh0 cmFfY29zdC0+YWFyY2gzMl9hZGRyX21vZGUtPnZlY3RvcltvcF90eXBlXTsK Kwl9CisgICAgICBlbHNlIGlmIChGTE9BVF9NT0RFX1AgKG1vZGUpKQorCXsK KwkgICpjb3N0ICs9IGV4dHJhX2Nvc3QtPmFhcmNoMzJfYWRkcl9tb2RlLT5m cFtvcF90eXBlXTsKKwl9CisgICAgICBlbHNlCisJeworCSAgKmNvc3QgKz0g ZXh0cmFfY29zdC0+YWFyY2gzMl9hZGRyX21vZGUtPmludGVnZXJbb3BfdHlw ZV07CisJfQogICAgIH0KIAogICAvKiBDYWxjdWxhdGUgY29zdCBvZiBtZW1v cnkgYWNjZXNzLiAgKi8KLS0gCjIuNy40Cgo= --94eb2c07d6145ffd500557977cb7--