All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, aurelien@aurel32.net
Subject: [Qemu-devel] [PULL 41/69] target/s390x: remove some Linux assumptions from IPTE
Date: Sun,  4 Jun 2017 10:34:41 -0700	[thread overview]
Message-ID: <20170604173509.29684-42-rth@twiddle.net> (raw)
In-Reply-To: <20170604173509.29684-1-rth@twiddle.net>

From: Aurelien Jarno <aurelien@aurel32.net>

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Message-Id: <20170531220129.27724-3-aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 target/s390x/cpu.h        |  2 ++
 target/s390x/mem_helper.c | 17 ++++++++++-------
 target/s390x/mmu_helper.c |  2 --
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index fdb2f50..a4d31df 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -1035,6 +1035,8 @@ struct sysib_322 {
 #define _SEGMENT_ENTRY_RO       0x200     /* page protection bit              */
 #define _SEGMENT_ENTRY_INV      0x20      /* invalid segment table entry      */
 
+#define VADDR_PX                0xff000   /* page index bits                  */
+
 #define _PAGE_RO        0x200            /* HW read-only bit  */
 #define _PAGE_INVALID   0x400            /* HW invalid bit    */
 #define _PAGE_RES0      0x800            /* bit must be zero  */
diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c
index e35571e..0ebd65d 100644
--- a/target/s390x/mem_helper.c
+++ b/target/s390x/mem_helper.c
@@ -1073,19 +1073,22 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_t a2)
 }
 
 /* invalidate pte */
-void HELPER(ipte)(CPUS390XState *env, uint64_t pte_addr, uint64_t vaddr)
+void HELPER(ipte)(CPUS390XState *env, uint64_t pto, uint64_t vaddr)
 {
     CPUState *cs = CPU(s390_env_get_cpu(env));
     uint64_t page = vaddr & TARGET_PAGE_MASK;
-    uint64_t pte = 0;
+    uint64_t pte_addr, pte;
 
     /* XXX broadcast to other CPUs */
 
-    /* XXX Linux is nice enough to give us the exact pte address.
-       According to spec we'd have to find it out ourselves */
-    /* XXX Linux is fine with overwriting the pte, the spec requires
-       us to only set the invalid bit */
-    stq_phys(cs->as, pte_addr, pte | _PAGE_INVALID);
+    /* Compute the page table entry address */
+    pte_addr = (pto & _SEGMENT_ENTRY_ORIGIN);
+    pte_addr += (vaddr & _VADDR_PX) >> 9;
+
+    /* Mark the page table entry as invalid */
+    pte = ldq_phys(cs->as, pte_addr);
+    pte |= _PAGE_INVALID;
+    stq_phys(cs->as, pte_addr, pte);
 
     /* XXX we exploit the fact that Linux passes the exact virtual
        address here - it's not obliged to! */
diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
index 31eb9ef..501e390 100644
--- a/target/s390x/mmu_helper.c
+++ b/target/s390x/mmu_helper.c
@@ -143,8 +143,6 @@ static int mmu_translate_pte(CPUS390XState *env, target_ulong vaddr,
     return 0;
 }
 
-#define VADDR_PX    0xff000         /* Page index bits */
-
 /* Decode segment table entry */
 static int mmu_translate_segment(CPUS390XState *env, target_ulong vaddr,
                                  uint64_t asc, uint64_t st_entry,
-- 
2.9.4

  parent reply	other threads:[~2017-06-04 17:36 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-04 17:34 [Qemu-devel] [PULL 00/69] target/s390x tcg patches Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 01/69] target/s390x: Add support for the TEST BLOCK instruction Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 02/69] target/s390x: Use cpu_loop_exit_restore for tlb_fill Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 03/69] target/s390x: Move helper_ex to end of file Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 04/69] target/s390x: Use unwind data for helper_nc Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 05/69] target/s390x: Use unwind data for helper_oc Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 06/69] target/s390x: Use unwind data for helper_xc Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 07/69] target/s390x: Use unwind data for helper_mvc Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 08/69] target/s390x: Use unwind data for helper_clc Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 09/69] target/s390x: Use unwind data for helper_clm Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 10/69] target/s390x: Use unwind data for helper_srst Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 11/69] target/s390x: Use unwind data for helper_clst Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 12/69] target/s390x: Use unwind data for helper_mvpg Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 13/69] target/s390x: Use unwind data for helper_mvst Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 14/69] target/s390x: Use unwind data for helper_lam Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 15/69] target/s390x: Use unwind data for helper_stam Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 16/69] target/s390x: Use unwind data for helper_mvcl Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 17/69] target/s390x: Use unwind data for helper_mvcle Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 18/69] target/s390x: Use unwind data for helper_clcle Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 19/69] target/s390x: Use unwind data for helper_cksm Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 20/69] target/s390x: Use unwind data for helper_unpk Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 21/69] target/s390x: Use unwind data for helper_tr Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 22/69] target/s390x: Use unwind data for helper_tre Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 23/69] target/s390x: Use unwind data for helper_trt Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 24/69] target/s390x: Use unwind data for helper_lctlg Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 25/69] target/s390x: Use unwind data for helper_lctl Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 26/69] target/s390x: Use unwind data for helper_stctl Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 27/69] target/s390x: Use unwind data for helper_testblock Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 28/69] target/s390x: Use unwind data for helper_tprot Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 29/69] target/s390x: Use unwind data for helper_lra Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 30/69] target/s390x: Use unwind data for helper_mvcs/mvcp Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 31/69] target/s390x: Fix some helper_ex problems Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 32/69] target/s390x: Fix EXECUTE with R1==0 Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 33/69] target/s390x: Use atomic operations for COMPARE SWAP PURGE Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 34/69] target/s390x: Implement CSPG Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 35/69] target/s390x: Save current ilen during translation Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 36/69] target/s390x: End the TB after EXECUTE Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 37/69] target/s390x: Implement EXECUTE via new TranslationBlock Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 38/69] target/s390x: Re-implement a few EXECUTE target insns directly Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 39/69] target/s390x/cpu_models: Allow some additional feature bits for the "qemu" CPU Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 40/69] target/s390x: remove dead code in translate.c Richard Henderson
2017-06-04 17:34 ` Richard Henderson [this message]
2017-06-04 17:34 ` [Qemu-devel] [PULL 42/69] target/s390x: implement local-TLB-clearing in IPTE Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 43/69] target/s390x: implement TEST AND SET Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 44/69] target/s390x: implement TEST ADDRESSING MODE Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 45/69] target/s390x: implement PACK Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 46/69] target/s390x: implement LOAD PAIR FROM QUADWORD Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 47/69] target/s390x: implement STORE PAIR TO QUADWORD Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 48/69] target/s390x: implement COMPARE AND SIGNAL Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 49/69] target/s390x: implement MOVE INVERSE Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 50/69] target/s390x: implement MOVE NUMERICS Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 51/69] target/s390x: implement MOVE WITH OFFSET Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 52/69] target/s390x: implement MOVE ZONES Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 53/69] target/s390x: improve 24-bit and 31-bit addresses read Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 54/69] target/s390x: improve 24-bit and 31-bit addresses write Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 55/69] target/s390x: improve 24-bit and 31-bit lengths read/write Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 56/69] target/s390x: fix COMPARE LOGICAL LONG EXTENDED Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 57/69] target/s390x: implement COMPARE LOGICAL LONG Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 58/69] target/s390x: fix adj_len_to_page Richard Henderson
2017-06-04 17:34 ` [Qemu-devel] [PULL 59/69] target/s390x: improve MOVE LONG and MOVE LONG EXTENDED Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 60/69] target/s390x: implement COMPARE LOGICAL LONG UNICODE Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 61/69] target/s390x: implement MOVE " Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 62/69] target/s390x: implement PACK ASCII Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 63/69] target/s390x: implement PACK UNICODE Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 64/69] target/s390x: implement UNPACK ASCII Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 65/69] target/s390x: implement UNPACK UNICODE Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 66/69] target/s390x: implement TEST DECIMAL Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 67/69] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 68/69] target/s390x: mark ETF2 and ETF2-ENH facilities as available Richard Henderson
2017-06-04 17:35 ` [Qemu-devel] [PULL 69/69] target/s390x: addressing exceptions are suppressing Richard Henderson
2017-06-04 18:32 ` [Qemu-devel] [PULL 00/69] target/s390x tcg patches no-reply
2017-06-04 19:54   ` Aurelien Jarno
2017-06-04 19:53 ` Aurelien Jarno

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170604173509.29684-42-rth@twiddle.net \
    --to=rth@twiddle.net \
    --cc=aurelien@aurel32.net \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.