X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Faarch64.cc;h=07abe44931f34504a986bf30500f0a862b2a9570;hb=9ae6bf640dc7c950e6f36097a3d2d760a132a542;hp=310331c7f844ea82bb67328a52520fb51f6c943c;hpb=2422813015a1601d0484afef73a94753ffc07a1d;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/aarch64.cc b/gold/aarch64.cc index 310331c7f8..07abe44931 100644 --- a/gold/aarch64.cc +++ b/gold/aarch64.cc @@ -1,6 +1,6 @@ // aarch64.cc -- aarch64 target support for gold. -// Copyright (C) 2014-2016 Free Software Foundation, Inc. +// Copyright (C) 2014-2020 Free Software Foundation, Inc. // Written by Jing Yu and Han Shen . // This file is part of gold. @@ -110,6 +110,10 @@ public: is_adrp(const Insntype insn) { return (insn & 0x9F000000) == 0x90000000; } + static bool + is_mrs_tpidr_el0(const Insntype insn) + { return (insn & 0xFFFFFFE0) == 0xd53bd040; } + static unsigned int aarch64_rm(const Insntype insn) { return aarch64_bits(insn, 16, 5); } @@ -156,7 +160,7 @@ public: uint64_t imm = ((adrp >> 29) & mask2) | (((adrp >> 5) & mask19) << 2); // Retrieve msb of 21-bit-signed imm for sign extension. uint64_t msbt = (imm >> 20) & 1; - // Real value is imm multipled by 4k. Value now has 33-bit information. + // Real value is imm multiplied by 4k. Value now has 33-bit information. int64_t value = imm << 12; // Sign extend to 64-bit by repeating msbt 31 (64-33) times and merge it // with value. @@ -266,7 +270,7 @@ public: uint32_t v = 0; uint32_t opc_v = 0; - /* Bail out quickly if INSN doesn't fall into the the load-store + /* Bail out quickly if INSN doesn't fall into the load-store encoding space. */ if (!aarch64_ldst (insn)) return false; @@ -784,8 +788,14 @@ Stub_template_repertoire::Stub_template_repertoire() 0x14000000, /* b