1. 02 6月, 2015 8 次提交
  2. 29 5月, 2015 3 次提交
  3. 19 5月, 2015 5 次提交
  4. 15 5月, 2015 1 次提交
  5. 26 4月, 2015 5 次提交
  6. 02 4月, 2015 1 次提交
  7. 16 3月, 2015 4 次提交
    • P
      target-arm: Ignore low bit of PC in M-profile exception return · fcf83ab1
      Peter Maydell 提交于
      For the ARM M-profile cores, exception return pops various registers
      including the PC from the stack. The architecture defines that if the
      lowest bit in the new PC value is set (ie the PC is not halfword
      aligned) then behaviour is UNPREDICTABLE. In practice hardware
      implementations seem to simply ignore the low bit, and some buggy
      RTOSes incorrectly rely on this. QEMU's behaviour was architecturally
      permitted, but bringing QEMU into line with the hardware behaviour
      allows more guest code to run. We log the situation as a guest error.
      
      This was reported as LP:1428657.
      Reported-by: NAnders Esbensen <anders@lyes.dk>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      fcf83ab1
    • A
      target-arm: get_phys_addr_lpae: more xn control · d8e052b3
      Andrew Jones 提交于
      This patch makes the following changes to the determination of
      whether an address is executable, when translating addresses
      using LPAE.
      
      1. No longer assumes that PL0 can't execute when it can't read.
         It can in AArch64, a difference from AArch32.
      2. Use va_size == 64 to determine we're in AArch64, rather than
         arm_feature(env, ARM_FEATURE_V8), which is insufficient.
      3. Add additional XN determinants
         - NS && is_secure && (SCR & SCR_SIF)
         - WXN && (prot & PAGE_WRITE)
         - AArch64: (prot_PL0 & PAGE_WRITE)
         - AArch32: UWXN && (prot_PL0 & PAGE_WRITE)
         - XN determination should also work in secure mode (untested)
         - XN may even work in EL2 (currently impossible to test)
      4. Cleans up the bloated PAGE_EXEC condition - by removing it.
      
      The helper get_S1prot is introduced. It may even work in EL2,
      when support for that comes, but, as the function name implies,
      it only works for stage 1 translations.
      Signed-off-by: NAndrew Jones <drjones@redhat.com>
      Message-id: 1426099139-14463-4-git-send-email-drjones@redhat.com
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d8e052b3
    • A
      target-arm: fix get_phys_addr_v6/SCTLR_AFE access check · d76951b6
      Andrew Jones 提交于
      Introduce simple_ap_to_rw_prot(), which has the same behavior as
      ap_to_rw_prot(), but takes the 2-bit simple AP[2:1] instead of
      the 3-bit AP[2:0]. Use this in get_phys_addr_v6 when SCTLR_AFE
      is set, as that bit indicates we should be using the simple AP
      format.
      
      It's unlikely this path is getting used. I don't see CR_AFE
      getting used by Linux, so possibly not. If it had been, then
      the check would have been wrong for all but AP[2:1] = 0b11.
      Anyway, this should fix it up, in case it ever does get used.
      Signed-off-by: NAndrew Jones <drjones@redhat.com>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1426099139-14463-3-git-send-email-drjones@redhat.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d76951b6
    • A
      target-arm: convert check_ap to ap_to_rw_prot · 0fbf5238
      Andrew Jones 提交于
      Instead of mixing access permission checking with access permissions
      to page protection flags translation, just do the translation, and
      leave it to the caller to check the protection flags against the access
      type. Also rename to ap_to_rw_prot to better describe the new behavior.
      Signed-off-by: NAndrew Jones <drjones@redhat.com>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1426099139-14463-2-git-send-email-drjones@redhat.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      0fbf5238
  8. 13 2月, 2015 1 次提交
  9. 05 2月, 2015 12 次提交