[{"id":1780254,"web_url":"http://patchwork.ozlabs.org/comment/1780254/","msgid":"<5d58270d-9d17-fe9e-6d24-9cb130646de6@amsat.org>","list_archive_url":null,"date":"2017-10-05T03:25:38","subject":"Re: [Qemu-devel] [Qemu-arm] [PATCH 03/20] target/arm: Prepare for\n\tCONTROL.SPSEL being nonzero in Handler mode","submitter":{"id":70924,"url":"http://patchwork.ozlabs.org/api/people/70924/","name":"Philippe Mathieu-Daudé","email":"f4bug@amsat.org"},"content":"On 09/22/2017 11:59 AM, Peter Maydell wrote:\n> In the v7M architecture, there is an invariant that if the CPU is\n> in Handler mode then the CONTROL.SPSEL bit cannot be nonzero.\n> This in turn means that the current stack pointer is always\n> indicated by CONTROL.SPSEL, even though Handler mode always uses\n> the Main stack pointer.\n> \n> In v8M, this invariant is removed, and CONTROL.SPSEL may now\n> be nonzero in Handler mode (though Handler mode still always\n> uses the Main stack pointer). In preparation for this change,\n> change how we handle this bit: rename switch_v7m_sp() to\n> the now more accurate write_v7m_control_spsel(), and make it\n> check both the handler mode state and the SPSEL bit.\n> \n> Note that this implicitly changes the point at which we switch\n> active SP on exception exit from before we pop the exception\n> frame to after it.\n> \n> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>\n\nReviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>\n\n> ---\n>  target/arm/cpu.h      |  8 ++++++-\n>  hw/intc/armv7m_nvic.c |  2 +-\n>  target/arm/helper.c   | 65 ++++++++++++++++++++++++++++++++++-----------------\n>  3 files changed, 51 insertions(+), 24 deletions(-)\n> \n> diff --git a/target/arm/cpu.h b/target/arm/cpu.h\n> index 8afceca..ad6eff4 100644\n> --- a/target/arm/cpu.h\n> +++ b/target/arm/cpu.h\n> @@ -991,6 +991,11 @@ void pmccntr_sync(CPUARMState *env);\n>  #define PSTATE_MODE_EL1t 4\n>  #define PSTATE_MODE_EL0t 0\n>  \n> +/* Write a new value to v7m.exception, thus transitioning into or out\n> + * of Handler mode; this may result in a change of active stack pointer.\n> + */\n> +void write_v7m_exception(CPUARMState *env, uint32_t new_exc);\n> +\n>  /* Map EL and handler into a PSTATE_MODE.  */\n>  static inline unsigned int aarch64_pstate_mode(unsigned int el, bool handler)\n>  {\n> @@ -1071,7 +1076,8 @@ static inline void xpsr_write(CPUARMState *env, uint32_t val, uint32_t mask)\n>          env->condexec_bits |= (val >> 8) & 0xfc;\n>      }\n>      if (mask & XPSR_EXCP) {\n> -        env->v7m.exception = val & XPSR_EXCP;\n> +        /* Note that this only happens on exception exit */\n> +        write_v7m_exception(env, val & XPSR_EXCP);\n>      }\n>  }\n>  \n> diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c\n> index bc7b66d..a1041c2 100644\n> --- a/hw/intc/armv7m_nvic.c\n> +++ b/hw/intc/armv7m_nvic.c\n> @@ -616,7 +616,7 @@ bool armv7m_nvic_acknowledge_irq(void *opaque)\n>      vec->active = 1;\n>      vec->pending = 0;\n>  \n> -    env->v7m.exception = s->vectpending;\n> +    write_v7m_exception(env, s->vectpending);\n>  \n>      nvic_irq_update(s);\n>  \n> diff --git a/target/arm/helper.c b/target/arm/helper.c\n> index f13b99d..509a1aa 100644\n> --- a/target/arm/helper.c\n> +++ b/target/arm/helper.c\n> @@ -6052,21 +6052,44 @@ static bool v7m_using_psp(CPUARMState *env)\n>          env->v7m.control[env->v7m.secure] & R_V7M_CONTROL_SPSEL_MASK;\n>  }\n>  \n> -/* Switch to V7M main or process stack pointer.  */\n> -static void switch_v7m_sp(CPUARMState *env, bool new_spsel)\n> +/* Write to v7M CONTROL.SPSEL bit. This may change the current\n> + * stack pointer between Main and Process stack pointers.\n> + */\n> +static void write_v7m_control_spsel(CPUARMState *env, bool new_spsel)\n>  {\n>      uint32_t tmp;\n> -    uint32_t old_control = env->v7m.control[env->v7m.secure];\n> -    bool old_spsel = old_control & R_V7M_CONTROL_SPSEL_MASK;\n> +    bool new_is_psp, old_is_psp = v7m_using_psp(env);\n> +\n> +    env->v7m.control[env->v7m.secure] =\n> +        deposit32(env->v7m.control[env->v7m.secure],\n> +                  R_V7M_CONTROL_SPSEL_SHIFT,\n> +                  R_V7M_CONTROL_SPSEL_LENGTH, new_spsel);\n> +\n> +    new_is_psp = v7m_using_psp(env);\n>  \n> -    if (old_spsel != new_spsel) {\n> +    if (old_is_psp != new_is_psp) {\n>          tmp = env->v7m.other_sp;\n>          env->v7m.other_sp = env->regs[13];\n>          env->regs[13] = tmp;\n> +    }\n> +}\n> +\n> +void write_v7m_exception(CPUARMState *env, uint32_t new_exc)\n> +{\n> +    /* Write a new value to v7m.exception, thus transitioning into or out\n> +     * of Handler mode; this may result in a change of active stack pointer.\n> +     */\n> +    bool new_is_psp, old_is_psp = v7m_using_psp(env);\n> +    uint32_t tmp;\n>  \n> -        env->v7m.control[env->v7m.secure] = deposit32(old_control,\n> -                                     R_V7M_CONTROL_SPSEL_SHIFT,\n> -                                     R_V7M_CONTROL_SPSEL_LENGTH, new_spsel);\n> +    env->v7m.exception = new_exc;\n> +\n> +    new_is_psp = v7m_using_psp(env);\n> +\n> +    if (old_is_psp != new_is_psp) {\n> +        tmp = env->v7m.other_sp;\n> +        env->v7m.other_sp = env->regs[13];\n> +        env->regs[13] = tmp;\n>      }\n>  }\n>  \n> @@ -6149,13 +6172,11 @@ static uint32_t *get_v7m_sp_ptr(CPUARMState *env, bool secure, bool threadmode,\n>      bool want_psp = threadmode && spsel;\n>  \n>      if (secure == env->v7m.secure) {\n> -        /* Currently switch_v7m_sp switches SP as it updates SPSEL,\n> -         * so the SP we want is always in regs[13].\n> -         * When we decouple SPSEL from the actually selected SP\n> -         * we need to check want_psp against v7m_using_psp()\n> -         * to see whether we need regs[13] or v7m.other_sp.\n> -         */\n> -        return &env->regs[13];\n> +        if (want_psp == v7m_using_psp(env)) {\n> +            return &env->regs[13];\n> +        } else {\n> +            return &env->v7m.other_sp;\n> +        }\n>      } else {\n>          if (want_psp) {\n>              return &env->v7m.other_ss_psp;\n> @@ -6198,7 +6219,7 @@ static void v7m_exception_taken(ARMCPU *cpu, uint32_t lr)\n>      uint32_t addr;\n>  \n>      armv7m_nvic_acknowledge_irq(env->nvic);\n> -    switch_v7m_sp(env, 0);\n> +    write_v7m_control_spsel(env, 0);\n>      arm_clear_exclusive(env);\n>      /* Clear IT bits */\n>      env->condexec_bits = 0;\n> @@ -6344,11 +6365,11 @@ static void do_v7m_exception_exit(ARMCPU *cpu)\n>          return;\n>      }\n>  \n> -    /* Set CONTROL.SPSEL from excret.SPSEL. For QEMU this currently\n> -     * causes us to switch the active SP, but we will change this\n> -     * later to not do that so we can support v8M.\n> +    /* Set CONTROL.SPSEL from excret.SPSEL. Since we're still in\n> +     * Handler mode (and will be until we write the new XPSR.Interrupt\n> +     * field) this does not switch around the current stack pointer.\n>       */\n> -    switch_v7m_sp(env, return_to_sp_process);\n> +    write_v7m_control_spsel(env, return_to_sp_process);\n>  \n>      {\n>          /* The stack pointer we should be reading the exception frame from\n> @@ -9163,11 +9184,11 @@ void HELPER(v7m_msr)(CPUARMState *env, uint32_t maskreg, uint32_t val)\n>      case 20: /* CONTROL */\n>          /* Writing to the SPSEL bit only has an effect if we are in\n>           * thread mode; other bits can be updated by any privileged code.\n> -         * switch_v7m_sp() deals with updating the SPSEL bit in\n> +         * write_v7m_control_spsel() deals with updating the SPSEL bit in\n>           * env->v7m.control, so we only need update the others.\n>           */\n>          if (!arm_v7m_is_handler_mode(env)) {\n> -            switch_v7m_sp(env, (val & R_V7M_CONTROL_SPSEL_MASK) != 0);\n> +            write_v7m_control_spsel(env, (val & R_V7M_CONTROL_SPSEL_MASK) != 0);\n>          }\n>          env->v7m.control[env->v7m.secure] &= ~R_V7M_CONTROL_NPRIV_MASK;\n>          env->v7m.control[env->v7m.secure] |= val & R_V7M_CONTROL_NPRIV_MASK;\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"VJpmjkmy\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y6ypy5Fdhz9sRq\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  5 Oct 2017 14:26:13 +1100 (AEDT)","from localhost ([::1]:37629 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dzwnY-0004gV-CD\n\tfor incoming@patchwork.ozlabs.org; Wed, 04 Oct 2017 23:26:08 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:39261)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dzwnD-0004gP-2l\n\tfor qemu-devel@nongnu.org; Wed, 04 Oct 2017 23:25:48 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dzwn9-0004cI-S8\n\tfor qemu-devel@nongnu.org; Wed, 04 Oct 2017 23:25:47 -0400","from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:38144)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dzwn9-0004c5-Mt; Wed, 04 Oct 2017 23:25:43 -0400","by mail-qk0-x244.google.com with SMTP id 17so2322043qkq.5;\n\tWed, 04 Oct 2017 20:25:43 -0700 (PDT)","from [192.168.1.240] ([181.93.89.178])\n\tby smtp.gmail.com with ESMTPSA id\n\t50sm11461200qts.82.2017.10.04.20.25.40\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 04 Oct 2017 20:25:42 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=sender:subject:to:cc:references:from:openpgp:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=0fH0fJ4wcgHW+Sg92m11bzvDdANk4dqIS5NVJvcno34=;\n\tb=VJpmjkmyDCIyReQ6ag4XfhGXs5bl7Smj+dlGfOG0UYsxeSxZ0J6T7vPaEZTD615ZOi\n\t+bpDHJHHR5YWw8lGYWcraywZX/Ud0vItHrMsLhQPODwUGOp7fv3vGjkYdoatTNMdMB60\n\tRx1OFU2gDE05sOWG4byA+fvJRBXVkIurp2H4MUAo920NCR25uy9gxD/fMzBoVPIrP8nl\n\tE8GPLaVOB2DM4rtpgoS+WUGpWxkkda+yYJYvmprOTrY08I0qTxX0OF5yaW01v3KQaLYO\n\tTdrXAUoxpZ3cFg7qsXk4buKqfZQGVa136feaWTR7hCSIYz1Z6A47vGAos1WDkYqsz1O/\n\tPntw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:subject:to:cc:references:from:openpgp\n\t:message-id:date:user-agent:mime-version:in-reply-to\n\t:content-language:content-transfer-encoding;\n\tbh=0fH0fJ4wcgHW+Sg92m11bzvDdANk4dqIS5NVJvcno34=;\n\tb=ig2JmRh++oNEcogL5AUCU1tfop3ak8xIrl31VZK2EZrAsqe6qikht7m8t1usv/u6FL\n\tncsTXSrv930yvzHCJbi3NLP8R3PairDkDVWj6cNxBxxQw8RGUKTzQBUWcfSb9klRT0vf\n\t0vrriC4F2j9GnczcYYoyfS+7wSC7KQFMHzpDZaZ1b5NP6rYX49cQuSn8mngPpnivDB9N\n\taupfj5txViwx1nH+DmnxgdoQrmYl1V5QE6xs8cjgN9ZsdBmDnoqRpIR/f6hwve6kdqMV\n\tkdQS8QGjqExBUxTqNjWeoC3g/1t1Zgk0/CHNaOt/eEJWWd01ZNJClpSEv+G8hXDSaDVy\n\t/31Q==","X-Gm-Message-State":"AMCzsaW19izCflW2NCKDgZIK8gNroOuQ6dw29VuTnrYWsiTPcj46kr7U\n\t5qHRKaVi8GXm0yXi7vrbF2g=","X-Google-Smtp-Source":"AOwi7QBiWy5TEHYnWd0HhEENT+SoXFGMVHeJgA4se0HncUZolK/IvunAs/FaJh63P76oASiNcPu3Xg==","X-Received":"by 10.55.67.81 with SMTP id q78mr15005827qka.248.1507173942950; \n\tWed, 04 Oct 2017 20:25:42 -0700 (PDT)","To":"Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n\tqemu-devel@nongnu.org","References":"<1506092407-26985-1-git-send-email-peter.maydell@linaro.org>\n\t<1506092407-26985-4-git-send-email-peter.maydell@linaro.org>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <f4bug@amsat.org>","Openpgp":"id=FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE;\n\turl=http://pgp.mit.edu/pks/lookup?op=get&search=0xE3E32C2CDEADC0DE","Message-ID":"<5d58270d-9d17-fe9e-6d24-9cb130646de6@amsat.org>","Date":"Thu, 5 Oct 2017 00:25:38 -0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<1506092407-26985-4-git-send-email-peter.maydell@linaro.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"8bit","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2607:f8b0:400d:c09::244","Subject":"Re: [Qemu-devel] [Qemu-arm] [PATCH 03/20] target/arm: Prepare for\n\tCONTROL.SPSEL being nonzero in Handler mode","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"patches@linaro.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1780776,"web_url":"http://patchwork.ozlabs.org/comment/1780776/","msgid":"<f272860f-2822-34d7-2440-3aceb62f3149@linaro.org>","list_archive_url":null,"date":"2017-10-05T16:09:23","subject":"Re: [Qemu-devel] [PATCH 03/20] target/arm: Prepare for\n\tCONTROL.SPSEL being nonzero in Handler mode","submitter":{"id":72104,"url":"http://patchwork.ozlabs.org/api/people/72104/","name":"Richard Henderson","email":"richard.henderson@linaro.org"},"content":"On 09/22/2017 10:59 AM, Peter Maydell wrote:\n> In the v7M architecture, there is an invariant that if the CPU is\n> in Handler mode then the CONTROL.SPSEL bit cannot be nonzero.\n> This in turn means that the current stack pointer is always\n> indicated by CONTROL.SPSEL, even though Handler mode always uses\n> the Main stack pointer.\n> \n> In v8M, this invariant is removed, and CONTROL.SPSEL may now\n> be nonzero in Handler mode (though Handler mode still always\n> uses the Main stack pointer). In preparation for this change,\n> change how we handle this bit: rename switch_v7m_sp() to\n> the now more accurate write_v7m_control_spsel(), and make it\n> check both the handler mode state and the SPSEL bit.\n> \n> Note that this implicitly changes the point at which we switch\n> active SP on exception exit from before we pop the exception\n> frame to after it.\n> \n> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>\n> ---\n>  target/arm/cpu.h      |  8 ++++++-\n>  hw/intc/armv7m_nvic.c |  2 +-\n>  target/arm/helper.c   | 65 ++++++++++++++++++++++++++++++++++-----------------\n>  3 files changed, 51 insertions(+), 24 deletions(-)\n\nReviewed-by: Richard Henderson <richard.henderson@linaro.org>\n\n\nr~","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"eC0IX1b2\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y7Hm64Ylqz9s7B\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  6 Oct 2017 03:09:58 +1100 (AEDT)","from localhost ([::1]:40705 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1e08ii-0006Kb-PF\n\tfor incoming@patchwork.ozlabs.org; Thu, 05 Oct 2017 12:09:56 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:40184)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <richard.henderson@linaro.org>) id 1e08iK-0006H4-QN\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 12:09:33 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <richard.henderson@linaro.org>) id 1e08iF-0004x0-6L\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 12:09:32 -0400","from mail-qt0-x22f.google.com ([2607:f8b0:400d:c0d::22f]:54350)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <richard.henderson@linaro.org>)\n\tid 1e08iF-0004wW-1V\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 12:09:27 -0400","by mail-qt0-x22f.google.com with SMTP id i13so26317948qtc.11\n\tfor <qemu-devel@nongnu.org>; Thu, 05 Oct 2017 09:09:27 -0700 (PDT)","from bigtime.twiddle.net ([2606:a000:7a4a:b100::1b])\n\tby smtp.gmail.com with ESMTPSA id\n\tx185sm6724958ywa.73.2017.10.05.09.09.25\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 05 Oct 2017 09:09:25 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=71jISXS0iP2jq8iOwS4I4qBExCWRVaYoEuvJN0V0czo=;\n\tb=eC0IX1b2H+CgSs0qmQxUYsgag9fHGrnV5eM8v4z2/9G6+cs6UvrrkDacvbiQVlxPCU\n\tYGJV41aV9C3yExYCDmNcmJutAvp6Fk7vFBWvinraFOW5Wy8Tv/lSnu7fnCOzBS7MQU+L\n\t5dVIxFzymv3W3TZL8OmraG5dXNbbQ5z8xMGeQ=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=71jISXS0iP2jq8iOwS4I4qBExCWRVaYoEuvJN0V0czo=;\n\tb=ih8upeBdsQhUA2f0p6Q2vMIAcGzMB1uasnazrZk5hZxenInZQe66QsUe+bH6F6SwWG\n\tuudKeprh8XdNPa1XjA5MVKP0RYx7ZDCZp7uPQhNI+843NqHrHCy+lnPheSr9adgbA7oq\n\tDRadI6VD2Jz3PQ0RW46VqNWdNxmCmCQajEbHyynPXUTRs3LNGLlQ9/otLEz5C8Cndb+6\n\tHmEe+3cZMgDSyLOlB0OAplyYRTDlGmJ7e7Hr51tikZL+QIPICsejHRSSyPCL1BpYvH0e\n\tmhIHsLB+b31j+NCYYKT9bI4C//gqPz4ypYD6Z13aEsla0ICcRrvExIZy+ICtKBm4/xEW\n\taHtQ==","X-Gm-Message-State":"AHPjjUg7cR6IMcjdc14sd52YksqjiWUW7MM2uHJksq2x5OwJPNp1bQsy\n\tTreELu2OQk7lu1ZiWQR5PAUJ1Q==","X-Google-Smtp-Source":"AOwi7QD+X1B0TYBv4uMgIVTllUenRWrhrZKsyfeXNE4HhFXfQ2UHPNF+aQr43Fdcs7ApTfmtqacfHw==","X-Received":"by 10.129.65.76 with SMTP id f12mr20346751ywk.274.1507219766479; \n\tThu, 05 Oct 2017 09:09:26 -0700 (PDT)","To":"Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n\tqemu-devel@nongnu.org","References":"<1506092407-26985-1-git-send-email-peter.maydell@linaro.org>\n\t<1506092407-26985-4-git-send-email-peter.maydell@linaro.org>","From":"Richard Henderson <richard.henderson@linaro.org>","Message-ID":"<f272860f-2822-34d7-2440-3aceb62f3149@linaro.org>","Date":"Thu, 5 Oct 2017 12:09:23 -0400","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<1506092407-26985-4-git-send-email-peter.maydell@linaro.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2607:f8b0:400d:c0d::22f","Subject":"Re: [Qemu-devel] [PATCH 03/20] target/arm: Prepare for\n\tCONTROL.SPSEL being nonzero in Handler mode","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"patches@linaro.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]