All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1564038073754.91133@bt.com>

diff --git a/a/content_digest b/N1/content_digest
index 9965110..684bf43 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,33 +1,33 @@
  "ref\0e9c6e5310b1a4863be45d45bf087fc3d@tpw09926dag18e.domain1.systemhost.net\0"
  "ref\01563810716254.18886@bt.com\0"
  "From\0<tony.nguyen@bt.com>\0"
- "Subject\0[Qemu-riscv] [Qemu-devel] [PATCH v3 00/15] Invert Endian bit in SPARCv9 MMU TTE\0"
+ "Subject\0[Qemu-arm] [Qemu-devel] [PATCH v3 00/15] Invert Endian bit in SPARCv9 MMU TTE\0"
  "Date\0Thu, 25 Jul 2019 07:01:14 +0000\0"
  "To\0<qemu-devel@nongnu.org>\0"
- "Cc\0<peter.maydell@linaro.org>"
-  <walling@linux.ibm.com>
-  <david@redhat.com>
-  <palmer@sifive.com>
-  <mark.cave-ayland@ilande.co.uk>
-  <Alistair.Francis@wdc.com>
-  <arikalo@wavecomp.com>
-  <mst@redhat.com>
-  <pasic@linux.ibm.com>
-  <borntraeger@de.ibm.com>
-  <rth@twiddle.net>
-  <atar4qemu@gmail.com>
-  <ehabkost@redhat.com>
-  <sw@weilnetz.de>
-  <alex.williamson@redhat.com>
-  <qemu-arm@nongnu.org>
-  <david@gibson.dropbear.id.au>
-  <qemu-riscv@nongnu.org>
-  <cohuck@redhat.com>
-  <qemu-s390x@nongnu.org>
-  <qemu-ppc@nongnu.org>
-  <amarkovic@wavecomp.com>
-  <pbonzini@redhat.com>
- " <aurelien@aurel32.net>\0"
+ "Cc\0peter.maydell@linaro.org"
+  walling@linux.ibm.com
+  mst@redhat.com
+  palmer@sifive.com
+  mark.cave-ayland@ilande.co.uk
+  Alistair.Francis@wdc.com
+  arikalo@wavecomp.com
+  david@redhat.com
+  pasic@linux.ibm.com
+  borntraeger@de.ibm.com
+  rth@twiddle.net
+  atar4qemu@gmail.com
+  ehabkost@redhat.com
+  sw@weilnetz.de
+  qemu-s390x@nongnu.org
+  qemu-arm@nongnu.org
+  david@gibson.dropbear.id.au
+  qemu-riscv@nongnu.org
+  cohuck@redhat.com
+  alex.williamson@redhat.com
+  qemu-ppc@nongnu.org
+  amarkovic@wavecomp.com
+  pbonzini@redhat.com
+ " aurelien@aurel32.net\0"
  "\01:1\0"
  "b\0"
  "This patchset implements the IE (Invert Endian) bit in SPARCv9 MMU TTE.\n"
@@ -483,4 +483,4 @@
  "</body>\r\n"
  "</html>\r\n"
 
-31a10d1c5c4f6762c7d074fd45f10379cccf0eeddda8796d58c772607ccf1fe4
+b939afe4916321b8764469cffd8fa1ed6f5f62a6f0096a28512c3a204864e042

diff --git a/a/2.bin b/a/2.bin
deleted file mode 100644
index e19c044..0000000
--- a/a/2.bin
+++ /dev/null
@@ -1,239 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css" style="display:none"><!-- P { margin-top: 0px; margin-bottom: 0px; } p { margin-top: 0px; margin-bottom: 0px; } .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(128, 0, 0); }--></style>
-</head>
-<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
-<p></p>
-<div><span style="font-size: 12pt;">This patchset implements the IE (Invert Endian) bit in SPARCv9 MMU TTE.</span><br>
-</div>
-<div><br>
-</div>
-<div>It is an attempt of the instructions outlined by Richard Henderson to Mark</div>
-<div>Cave-Ayland.</div>
-<div><br>
-</div>
-<div>Tested with OpenBSD on sun4u. Solaris 10 is my actual goal, but unfortunately a</div>
-<div>separate keyboard issue remains in the way.</div>
-<div><br>
-</div>
-<div>On 01/11/17 19:15, Mark Cave-Ayland wrote:</div>
-<div><br>
-</div>
-<div>&gt;On 15/08/17 19:10, Richard Henderson wrote:</div>
-<div>&gt;</div>
-<div>&gt;&gt; [CC Peter re MemTxAttrs below]</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; On 08/15/2017 09:38 AM, Mark Cave-Ayland wrote:</div>
-<div>&gt;&gt;&gt; Working through an incorrect endian issue on qemu-system-sparc64, it has</div>
-<div>&gt;&gt;&gt; become apparent that at least one OS makes use of the IE (Invert Endian)</div>
-<div>&gt;&gt;&gt; bit in the SPARCv9 MMU TTE to map PCI memory space without the</div>
-<div>&gt;&gt;&gt; programmer having to manually endian-swap accesses.</div>
-<div>&gt;&gt;&gt;</div>
-<div>&gt;&gt;&gt; In other words, to quote the UltraSPARC specification: &quot;if this bit is</div>
-<div>&gt;&gt;&gt; set, accesses to the associated page are processed with inverse</div>
-<div>&gt;&gt;&gt; endianness from what is specified by the instruction (big-for-little and</div>
-<div>&gt;&gt;&gt; little-for-big)&quot;.</div>
-<div><br>
-</div>
-<div>A good explanation by Mark why the IE bit is required.</div>
-<div><br>
-</div>
-<div>&gt;&gt;&gt;</div>
-<div>&gt;&gt;&gt; Looking through various bits of code, I'm trying to get a feel for the</div>
-<div>&gt;&gt;&gt; best way to implement this in an efficient manner. From what I can see</div>
-<div>&gt;&gt;&gt; this could be solved using an additional MMU index, however I'm not</div>
-<div>&gt;&gt;&gt; overly familiar with the memory and softmmu subsystems.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; No, it can't be solved with an MMU index.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt;&gt; Can anyone point me in the right direction as to what would be the best</div>
-<div>&gt;&gt;&gt; way to implement this feature within QEMU?</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; It's definitely tricky.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; We definitely need some TLB_FLAGS_MASK bit set so that we're forced through</div>
-<div>&gt;&gt; the</div>
-<div>&gt;&gt; memory slow path. &nbsp;There is no other way to bypass the endianness that we've</div>
-<div>&gt;&gt; already encoded from the target instruction.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; Given the tlb_set_page_with_attrs interface, I would think that we need a new</div>
-<div>&gt;&gt; bit in MemTxAttrs, so that the target/sparc tlb_fill (and subroutines) can</div>
-<div>&gt;&gt; pass</div>
-<div>&gt;&gt; along the TTE bit for the given page.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; We have an existing problem in softmmu_template.h,</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; &nbsp; &nbsp; /* ??? Note that the io helpers always read data in the target</div>
-<div>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;byte ordering. &nbsp;We should push the LE/BE request down into io. &nbsp;*/</div>
-<div>&gt;&gt; &nbsp; &nbsp; res = glue(io_read, SUFFIX)(env, mmu_idx, index, addr, retaddr);</div>
-<div>&gt;&gt; &nbsp; &nbsp; res = TGT_BE(res);</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; We do not want to add a third(!) byte swap along the i/o path. &nbsp;We need to</div>
-<div>&gt;&gt; collapse the two that we have already before considering this one.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; This probably takes the form of:</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; (1) Replacing the &quot;int size&quot; argument with &quot;TCGMemOp memop&quot; for</div>
-<div>&gt;&gt; &nbsp; &nbsp; &nbsp; a) io_{read,write}x in accel/tcg/cputlb.c,</div>
-<div>&gt;&gt; &nbsp; &nbsp; &nbsp; b) memory_region_dispatch_{read,write} in memory.c,</div>
-<div>&gt;&gt; &nbsp; &nbsp; &nbsp; c) adjust_endianness in memory.c.</div>
-<div>&gt;&gt; &nbsp; &nbsp; This carries size&#43;sign&#43;endianness down to the next level.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; (2) In memory.c, adjust_endianness,</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; &nbsp; &nbsp; &nbsp;if (memory_region_wrong_endianness(mr)) {</div>
-<div>&gt;&gt; - &nbsp; &nbsp; &nbsp; &nbsp;switch (size) {</div>
-<div>&gt;&gt; &#43; &nbsp; &nbsp; &nbsp; &nbsp;memop ^= MO_BSWAP;</div>
-<div>&gt;&gt; &#43; &nbsp; &nbsp;}</div>
-<div>&gt;&gt; &#43; &nbsp; &nbsp;if (memop &amp; MO_BSWAP) {</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; &nbsp; &nbsp; For extra credit, re-arrange memory_region_wrong_endianness</div>
-<div>&gt;&gt; &nbsp; &nbsp; to something more explicit -- &quot;wrong&quot; isn't helpful.</div>
-<div>&gt;</div>
-<div>&gt;Finally I've had a bit of spare time to experiment with this approach,</div>
-<div>&gt;and from what I can see there are currently 2 issues:</div>
-<div>&gt;</div>
-<div>&gt;</div>
-<div>&gt;1) Using TCGMemOp in memory.c means it is no longer accelerator agnostic</div>
-<div>&gt;</div>
-<div>&gt;For the moment I've defined a separate MemOp in memory.h and provided a</div>
-<div>&gt;mapping function in io_{read,write}x to map from TCGMemOp to MemOp and</div>
-<div>&gt;then pass that into memory_region_dispatch_{read,write}.</div>
-<div>&gt;</div>
-<div>&gt;Other than not referencing TCGMemOp in the memory API, another reason</div>
-<div>&gt;for doing this was that I wasn't convinced that all the MO_ attributes</div>
-<div>&gt;were valid outside of TCG. I do, of course, strongly defer to other</div>
-<div>&gt;people's knowledge in this area though.</div>
-<div>&gt;</div>
-<div>&gt;</div>
-<div>&gt;2) The above changes to adjust_endianness() fail when</div>
-<div>&gt;memory_region_dispatch_{read,write} are called recursively</div>
-<div>&gt;</div>
-<div>&gt;Whilst booting qemu-system-sparc64 I see that</div>
-<div>&gt;memory_region_dispatch_{read,write} get called recursively - once via</div>
-<div>&gt;io_{read,write}x and then again via flatview_read_continue() in exec.c.</div>
-<div>&gt;</div>
-<div>&gt;The net effect of this is that we perform the bswap correctly at the</div>
-<div>&gt;tail of the recursion, but then as we travel back up the stack we hit</div>
-<div>&gt;memory_region_dispatch_{read,write} once again causing a second bswap</div>
-<div>&gt;which means the value is returned with the incorrect endian again.</div>
-<div>&gt;</div>
-<div>&gt;</div>
-<div>&gt;My understanding from your softmmu_template.h comment above is that the</div>
-<div>&gt;memory API should do the endian swapping internally allowing the removal</div>
-<div>&gt;of the final TGT_BE/TGT_LE applied to the result, or did I get this wrong?</div>
-<div>&gt;</div>
-<div>&gt;&gt; (3) In tlb_set_page_with_attrs, notice attrs.byte_swap and set</div>
-<div>&gt;&gt; &nbsp; &nbsp; a new TLB_FORCE_SLOW bit within TLB_FLAGS_MASK.</div>
-<div>&gt;&gt;</div>
-<div>&gt;&gt; (4) In io_{read,write}x, if iotlbentry-&gt;attrs.byte_swap is set,</div>
-<div>&gt;&gt; &nbsp; &nbsp; then memop ^= MO_BSWAP.</div>
-<div><br>
-</div>
-<div>Thanks all for the v1 and v2 feedback.</div>
-<div><br>
-</div>
-<div>v2:</div>
-<div>- Moved size&#43;sign&#43;endianness attributes from TCGMemOp into MemOp.</div>
-<div>&nbsp; In v1 TCGMemOp was re-purposed entirely into MemOp.</div>
-<div>- Replaced MemOp MO_{8|16|32|64} with TCGMemOp MO_{UB|UW|UL|UQ} alias.</div>
-<div>&nbsp; This is to avoid warnings on comparing and coercing different enums.</div>
-<div>- Renamed get_memop to get_tcgmemop for clarity.</div>
-<div>- MEMOP is now SIZE_MEMOP, which is just ctzl(size).</div>
-<div>- Split patch 3/4 so one memory_region_dispatch_{read|write} interface</div>
-<div>&nbsp; is converted per patch.</div>
-<div>- Do not reuse TLB_RECHECK, use new TLB_FORCE_SLOW instead.</div>
-<div>- Split patch 4/4 so adding the MemTxAddrs parameters and converting</div>
-<div>&nbsp; tlb_set_page() to tlb_set_page_with_attrs() is separate from usage.</div>
-<div>- CC'd maintainers.</div>
-<div><br>
-</div>
-<div>v3:</div>
-<div>- Like v1, the entire TCGMemOp enum is now MemOp.</div>
-<div>- MemOp target dependant attributes are&nbsp;conditional&nbsp;upon NEED_CPU_H&nbsp;<br>
-</div>
-<div><br>
-</div>
-<div>Tony Nguyen (15):</div>
-<div>&nbsp; tcg: TCGMemOp is now accelerator independent MemOp</div>
-<div>&nbsp; memory: Access MemoryRegion with MemOp</div>
-<div>&nbsp; target/mips: Access MemoryRegion with MemOp</div>
-<div>&nbsp; hw/s390x: Access MemoryRegion with MemOp</div>
-<div>&nbsp; hw/intc/armv7m_nic: Access MemoryRegion with MemOp</div>
-<div>&nbsp; hw/virtio: Access MemoryRegion with MemOp</div>
-<div>&nbsp; hw/vfio: Access MemoryRegion with MemOp</div>
-<div>&nbsp; exec: Access MemoryRegion with MemOp</div>
-<div>&nbsp; cputlb: Access MemoryRegion with MemOp</div>
-<div>&nbsp; memory: Access MemoryRegion with MemOp semantics</div>
-<div>&nbsp; memory: Single byte swap along the I/O path</div>
-<div>&nbsp; cpu: TLB_FLAGS_MASK bit to force memory slow path</div>
-<div>&nbsp; cputlb: Byte swap memory transaction attribute</div>
-<div>&nbsp; target/sparc: Add TLB entry with attributes</div>
-<div>&nbsp; target/sparc: sun4u Invert Endian TTE bit</div>
-<div><br>
-</div>
-<div>&nbsp;accel/tcg/cputlb.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;71 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;--------</div>
-<div>&nbsp;exec.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 6 &#43;-</div>
-<div>&nbsp;hw/intc/armv7m_nvic.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;12 &#43;&#43;-</div>
-<div>&nbsp;hw/s390x/s390-pci-inst.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 8 &#43;-</div>
-<div>&nbsp;hw/vfio/pci-quirks.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 5 &#43;-</div>
-<div>&nbsp;hw/virtio/virtio-pci.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 7 &#43;-</div>
-<div>&nbsp;include/exec/cpu-all.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;10 &#43;&#43;-</div>
-<div>&nbsp;include/exec/memattrs.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 2 &#43;</div>
-<div>&nbsp;include/exec/memop.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 112 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;</div>
-<div>&nbsp;include/exec/memory.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 9 &#43;&#43;-</div>
-<div>&nbsp;memory.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;37 &#43;&#43;&#43;&#43;&#43;----</div>
-<div>&nbsp;memory_ldst.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;18 &#43;&#43;---</div>
-<div>&nbsp;target/alpha/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>
-<div>&nbsp;target/arm/translate-a64.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;48 &#43;&#43;&#43;&#43;&#43;&#43;------</div>
-<div>&nbsp;target/arm/translate-a64.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>
-<div>&nbsp;target/arm/translate-sve.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>
-<div>&nbsp;target/arm/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;32 &#43;&#43;&#43;&#43;----</div>
-<div>&nbsp;target/arm/translate.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>
-<div>&nbsp;target/hppa/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;14 &#43;&#43;--</div>
-<div>&nbsp;target/i386/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 132 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;----------------</div>
-<div>&nbsp;target/m68k/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 2 &#43;-</div>
-<div>&nbsp;target/microblaze/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 4 &#43;-</div>
-<div>&nbsp;target/mips/op_helper.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 5 &#43;-</div>
-<div>&nbsp;target/mips/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 8 &#43;-</div>
-<div>&nbsp;target/openrisc/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 4 &#43;-</div>
-<div>&nbsp;target/ppc/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;12 &#43;--</div>
-<div>&nbsp;target/riscv/insn_trans/trans_rva.inc.c | &nbsp; 8 &#43;-</div>
-<div>&nbsp;target/riscv/insn_trans/trans_rvi.inc.c | &nbsp; 4 &#43;-</div>
-<div>&nbsp;target/s390x/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 6 &#43;-</div>
-<div>&nbsp;target/s390x/translate_vx.inc.c &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;10 &#43;--</div>
-<div>&nbsp;target/sparc/cpu.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;</div>
-<div>&nbsp;target/sparc/mmu_helper.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;40 &#43;&#43;&#43;&#43;&#43;&#43;----</div>
-<div>&nbsp;target/sparc/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;14 &#43;&#43;--</div>
-<div>&nbsp;target/tilegx/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;10 &#43;--</div>
-<div>&nbsp;target/tricore/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 8 &#43;-</div>
-<div>&nbsp;tcg/README &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>
-<div>&nbsp;tcg/aarch64/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;26 &#43;&#43;&#43;----</div>
-<div>&nbsp;tcg/arm/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;26 &#43;&#43;&#43;----</div>
-<div>&nbsp;tcg/i386/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;24 &#43;&#43;&#43;---</div>
-<div>&nbsp;tcg/mips/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;16 &#43;&#43;--</div>
-<div>&nbsp;tcg/optimize.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>
-<div>&nbsp;tcg/ppc/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;12 &#43;--</div>
-<div>&nbsp;tcg/riscv/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;20 &#43;&#43;---</div>
-<div>&nbsp;tcg/s390/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;14 &#43;&#43;--</div>
-<div>&nbsp;tcg/sparc/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 6 &#43;-</div>
-<div>&nbsp;tcg/tcg-op.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;38 &#43;&#43;&#43;&#43;-----</div>
-<div>&nbsp;tcg/tcg-op.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;86 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-----------</div>
-<div>&nbsp;tcg/tcg.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 2 &#43;-</div>
-<div>&nbsp;tcg/tcg.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;99 &#43;&#43;----------------------</div>
-<div>&nbsp;trace/mem-internal.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 4 &#43;-</div>
-<div>&nbsp;trace/mem.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 4 &#43;-</div>
-<div>&nbsp;51 files changed, 561 insertions(&#43;), 488 deletions(-)</div>
-<div>&nbsp;create mode 100644 include/exec/memop.h</div>
-<div><br>
-</div>
-<div>--&nbsp;</div>
-<div>1.8.3.1</div>
-<div><br>
-<br>
-</div>
-<p><br>
-</p>
-</body>
-</html>
diff --git a/a/2.hdr b/a/2.hdr
deleted file mode 100644
index e54d0ae..0000000
--- a/a/2.hdr
+++ /dev/null
@@ -1,2 +0,0 @@
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
diff --git a/a/content_digest b/N2/content_digest
index 9965110..341a385 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -1,34 +1,34 @@
  "ref\0e9c6e5310b1a4863be45d45bf087fc3d@tpw09926dag18e.domain1.systemhost.net\0"
  "ref\01563810716254.18886@bt.com\0"
  "From\0<tony.nguyen@bt.com>\0"
- "Subject\0[Qemu-riscv] [Qemu-devel] [PATCH v3 00/15] Invert Endian bit in SPARCv9 MMU TTE\0"
+ "Subject\0[Qemu-devel] [PATCH v3 00/15] Invert Endian bit in SPARCv9 MMU TTE\0"
  "Date\0Thu, 25 Jul 2019 07:01:14 +0000\0"
  "To\0<qemu-devel@nongnu.org>\0"
- "Cc\0<peter.maydell@linaro.org>"
-  <walling@linux.ibm.com>
-  <david@redhat.com>
-  <palmer@sifive.com>
-  <mark.cave-ayland@ilande.co.uk>
-  <Alistair.Francis@wdc.com>
-  <arikalo@wavecomp.com>
-  <mst@redhat.com>
-  <pasic@linux.ibm.com>
-  <borntraeger@de.ibm.com>
-  <rth@twiddle.net>
-  <atar4qemu@gmail.com>
-  <ehabkost@redhat.com>
-  <sw@weilnetz.de>
-  <alex.williamson@redhat.com>
-  <qemu-arm@nongnu.org>
-  <david@gibson.dropbear.id.au>
-  <qemu-riscv@nongnu.org>
-  <cohuck@redhat.com>
-  <qemu-s390x@nongnu.org>
-  <qemu-ppc@nongnu.org>
-  <amarkovic@wavecomp.com>
-  <pbonzini@redhat.com>
- " <aurelien@aurel32.net>\0"
- "\01:1\0"
+ "Cc\0peter.maydell@linaro.org"
+  walling@linux.ibm.com
+  mst@redhat.com
+  palmer@sifive.com
+  mark.cave-ayland@ilande.co.uk
+  Alistair.Francis@wdc.com
+  arikalo@wavecomp.com
+  david@redhat.com
+  pasic@linux.ibm.com
+  borntraeger@de.ibm.com
+  rth@twiddle.net
+  atar4qemu@gmail.com
+  ehabkost@redhat.com
+  sw@weilnetz.de
+  qemu-s390x@nongnu.org
+  qemu-arm@nongnu.org
+  david@gibson.dropbear.id.au
+  qemu-riscv@nongnu.org
+  cohuck@redhat.com
+  alex.williamson@redhat.com
+  qemu-ppc@nongnu.org
+  amarkovic@wavecomp.com
+  pbonzini@redhat.com
+ " aurelien@aurel32.net\0"
+ "\00:1\0"
  "b\0"
  "This patchset implements the IE (Invert Endian) bit in SPARCv9 MMU TTE.\n"
  "\n"
@@ -241,246 +241,5 @@
  "\n"
  "--\n"
  1.8.3.1
- "\01:2\0"
- "b\0"
- "<html>\r\n"
- "<head>\r\n"
- "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\r\n"
- "<style type=\"text/css\" style=\"display:none\"><!-- P { margin-top: 0px; margin-bottom: 0px; } p { margin-top: 0px; margin-bottom: 0px; } .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(128, 0, 0); }--></style>\r\n"
- "</head>\r\n"
- "<body dir=\"ltr\" style=\"font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;\">\r\n"
- "<p></p>\r\n"
- "<div><span style=\"font-size: 12pt;\">This patchset implements the IE (Invert Endian) bit in SPARCv9 MMU TTE.</span><br>\r\n"
- "</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>It is an attempt of the instructions outlined by Richard Henderson to Mark</div>\r\n"
- "<div>Cave-Ayland.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>Tested with OpenBSD on sun4u. Solaris 10 is my actual goal, but unfortunately a</div>\r\n"
- "<div>separate keyboard issue remains in the way.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>On 01/11/17 19:15, Mark Cave-Ayland wrote:</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>&gt;On 15/08/17 19:10, Richard Henderson wrote:</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;&gt; [CC Peter re MemTxAttrs below]</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; On 08/15/2017 09:38 AM, Mark Cave-Ayland wrote:</div>\r\n"
- "<div>&gt;&gt;&gt; Working through an incorrect endian issue on qemu-system-sparc64, it has</div>\r\n"
- "<div>&gt;&gt;&gt; become apparent that at least one OS makes use of the IE (Invert Endian)</div>\r\n"
- "<div>&gt;&gt;&gt; bit in the SPARCv9 MMU TTE to map PCI memory space without the</div>\r\n"
- "<div>&gt;&gt;&gt; programmer having to manually endian-swap accesses.</div>\r\n"
- "<div>&gt;&gt;&gt;</div>\r\n"
- "<div>&gt;&gt;&gt; In other words, to quote the UltraSPARC specification: &quot;if this bit is</div>\r\n"
- "<div>&gt;&gt;&gt; set, accesses to the associated page are processed with inverse</div>\r\n"
- "<div>&gt;&gt;&gt; endianness from what is specified by the instruction (big-for-little and</div>\r\n"
- "<div>&gt;&gt;&gt; little-for-big)&quot;.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>A good explanation by Mark why the IE bit is required.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>&gt;&gt;&gt;</div>\r\n"
- "<div>&gt;&gt;&gt; Looking through various bits of code, I'm trying to get a feel for the</div>\r\n"
- "<div>&gt;&gt;&gt; best way to implement this in an efficient manner. From what I can see</div>\r\n"
- "<div>&gt;&gt;&gt; this could be solved using an additional MMU index, however I'm not</div>\r\n"
- "<div>&gt;&gt;&gt; overly familiar with the memory and softmmu subsystems.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; No, it can't be solved with an MMU index.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt;&gt; Can anyone point me in the right direction as to what would be the best</div>\r\n"
- "<div>&gt;&gt;&gt; way to implement this feature within QEMU?</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; It's definitely tricky.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; We definitely need some TLB_FLAGS_MASK bit set so that we're forced through</div>\r\n"
- "<div>&gt;&gt; the</div>\r\n"
- "<div>&gt;&gt; memory slow path. &nbsp;There is no other way to bypass the endianness that we've</div>\r\n"
- "<div>&gt;&gt; already encoded from the target instruction.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; Given the tlb_set_page_with_attrs interface, I would think that we need a new</div>\r\n"
- "<div>&gt;&gt; bit in MemTxAttrs, so that the target/sparc tlb_fill (and subroutines) can</div>\r\n"
- "<div>&gt;&gt; pass</div>\r\n"
- "<div>&gt;&gt; along the TTE bit for the given page.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; We have an existing problem in softmmu_template.h,</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; /* ??? Note that the io helpers always read data in the target</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;byte ordering. &nbsp;We should push the LE/BE request down into io. &nbsp;*/</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; res = glue(io_read, SUFFIX)(env, mmu_idx, index, addr, retaddr);</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; res = TGT_BE(res);</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; We do not want to add a third(!) byte swap along the i/o path. &nbsp;We need to</div>\r\n"
- "<div>&gt;&gt; collapse the two that we have already before considering this one.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; This probably takes the form of:</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; (1) Replacing the &quot;int size&quot; argument with &quot;TCGMemOp memop&quot; for</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; &nbsp; a) io_{read,write}x in accel/tcg/cputlb.c,</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; &nbsp; b) memory_region_dispatch_{read,write} in memory.c,</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; &nbsp; c) adjust_endianness in memory.c.</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; This carries size&#43;sign&#43;endianness down to the next level.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; (2) In memory.c, adjust_endianness,</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; &nbsp;if (memory_region_wrong_endianness(mr)) {</div>\r\n"
- "<div>&gt;&gt; - &nbsp; &nbsp; &nbsp; &nbsp;switch (size) {</div>\r\n"
- "<div>&gt;&gt; &#43; &nbsp; &nbsp; &nbsp; &nbsp;memop ^= MO_BSWAP;</div>\r\n"
- "<div>&gt;&gt; &#43; &nbsp; &nbsp;}</div>\r\n"
- "<div>&gt;&gt; &#43; &nbsp; &nbsp;if (memop &amp; MO_BSWAP) {</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; For extra credit, re-arrange memory_region_wrong_endianness</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; to something more explicit -- &quot;wrong&quot; isn't helpful.</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;Finally I've had a bit of spare time to experiment with this approach,</div>\r\n"
- "<div>&gt;and from what I can see there are currently 2 issues:</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;1) Using TCGMemOp in memory.c means it is no longer accelerator agnostic</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;For the moment I've defined a separate MemOp in memory.h and provided a</div>\r\n"
- "<div>&gt;mapping function in io_{read,write}x to map from TCGMemOp to MemOp and</div>\r\n"
- "<div>&gt;then pass that into memory_region_dispatch_{read,write}.</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;Other than not referencing TCGMemOp in the memory API, another reason</div>\r\n"
- "<div>&gt;for doing this was that I wasn't convinced that all the MO_ attributes</div>\r\n"
- "<div>&gt;were valid outside of TCG. I do, of course, strongly defer to other</div>\r\n"
- "<div>&gt;people's knowledge in this area though.</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;2) The above changes to adjust_endianness() fail when</div>\r\n"
- "<div>&gt;memory_region_dispatch_{read,write} are called recursively</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;Whilst booting qemu-system-sparc64 I see that</div>\r\n"
- "<div>&gt;memory_region_dispatch_{read,write} get called recursively - once via</div>\r\n"
- "<div>&gt;io_{read,write}x and then again via flatview_read_continue() in exec.c.</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;The net effect of this is that we perform the bswap correctly at the</div>\r\n"
- "<div>&gt;tail of the recursion, but then as we travel back up the stack we hit</div>\r\n"
- "<div>&gt;memory_region_dispatch_{read,write} once again causing a second bswap</div>\r\n"
- "<div>&gt;which means the value is returned with the incorrect endian again.</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;My understanding from your softmmu_template.h comment above is that the</div>\r\n"
- "<div>&gt;memory API should do the endian swapping internally allowing the removal</div>\r\n"
- "<div>&gt;of the final TGT_BE/TGT_LE applied to the result, or did I get this wrong?</div>\r\n"
- "<div>&gt;</div>\r\n"
- "<div>&gt;&gt; (3) In tlb_set_page_with_attrs, notice attrs.byte_swap and set</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; a new TLB_FORCE_SLOW bit within TLB_FLAGS_MASK.</div>\r\n"
- "<div>&gt;&gt;</div>\r\n"
- "<div>&gt;&gt; (4) In io_{read,write}x, if iotlbentry-&gt;attrs.byte_swap is set,</div>\r\n"
- "<div>&gt;&gt; &nbsp; &nbsp; then memop ^= MO_BSWAP.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>Thanks all for the v1 and v2 feedback.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>v2:</div>\r\n"
- "<div>- Moved size&#43;sign&#43;endianness attributes from TCGMemOp into MemOp.</div>\r\n"
- "<div>&nbsp; In v1 TCGMemOp was re-purposed entirely into MemOp.</div>\r\n"
- "<div>- Replaced MemOp MO_{8|16|32|64} with TCGMemOp MO_{UB|UW|UL|UQ} alias.</div>\r\n"
- "<div>&nbsp; This is to avoid warnings on comparing and coercing different enums.</div>\r\n"
- "<div>- Renamed get_memop to get_tcgmemop for clarity.</div>\r\n"
- "<div>- MEMOP is now SIZE_MEMOP, which is just ctzl(size).</div>\r\n"
- "<div>- Split patch 3/4 so one memory_region_dispatch_{read|write} interface</div>\r\n"
- "<div>&nbsp; is converted per patch.</div>\r\n"
- "<div>- Do not reuse TLB_RECHECK, use new TLB_FORCE_SLOW instead.</div>\r\n"
- "<div>- Split patch 4/4 so adding the MemTxAddrs parameters and converting</div>\r\n"
- "<div>&nbsp; tlb_set_page() to tlb_set_page_with_attrs() is separate from usage.</div>\r\n"
- "<div>- CC'd maintainers.</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>v3:</div>\r\n"
- "<div>- Like v1, the entire TCGMemOp enum is now MemOp.</div>\r\n"
- "<div>- MemOp target dependant attributes are&nbsp;conditional&nbsp;upon NEED_CPU_H&nbsp;<br>\r\n"
- "</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>Tony Nguyen (15):</div>\r\n"
- "<div>&nbsp; tcg: TCGMemOp is now accelerator independent MemOp</div>\r\n"
- "<div>&nbsp; memory: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; target/mips: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; hw/s390x: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; hw/intc/armv7m_nic: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; hw/virtio: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; hw/vfio: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; exec: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; cputlb: Access MemoryRegion with MemOp</div>\r\n"
- "<div>&nbsp; memory: Access MemoryRegion with MemOp semantics</div>\r\n"
- "<div>&nbsp; memory: Single byte swap along the I/O path</div>\r\n"
- "<div>&nbsp; cpu: TLB_FLAGS_MASK bit to force memory slow path</div>\r\n"
- "<div>&nbsp; cputlb: Byte swap memory transaction attribute</div>\r\n"
- "<div>&nbsp; target/sparc: Add TLB entry with attributes</div>\r\n"
- "<div>&nbsp; target/sparc: sun4u Invert Endian TTE bit</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>&nbsp;accel/tcg/cputlb.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;71 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;--------</div>\r\n"
- "<div>&nbsp;exec.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 6 &#43;-</div>\r\n"
- "<div>&nbsp;hw/intc/armv7m_nvic.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;12 &#43;&#43;-</div>\r\n"
- "<div>&nbsp;hw/s390x/s390-pci-inst.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 8 &#43;-</div>\r\n"
- "<div>&nbsp;hw/vfio/pci-quirks.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 5 &#43;-</div>\r\n"
- "<div>&nbsp;hw/virtio/virtio-pci.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 7 &#43;-</div>\r\n"
- "<div>&nbsp;include/exec/cpu-all.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;10 &#43;&#43;-</div>\r\n"
- "<div>&nbsp;include/exec/memattrs.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 2 &#43;</div>\r\n"
- "<div>&nbsp;include/exec/memop.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 112 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;</div>\r\n"
- "<div>&nbsp;include/exec/memory.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 9 &#43;&#43;-</div>\r\n"
- "<div>&nbsp;memory.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;37 &#43;&#43;&#43;&#43;&#43;----</div>\r\n"
- "<div>&nbsp;memory_ldst.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;18 &#43;&#43;---</div>\r\n"
- "<div>&nbsp;target/alpha/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;target/arm/translate-a64.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;48 &#43;&#43;&#43;&#43;&#43;&#43;------</div>\r\n"
- "<div>&nbsp;target/arm/translate-a64.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;target/arm/translate-sve.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;target/arm/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;32 &#43;&#43;&#43;&#43;----</div>\r\n"
- "<div>&nbsp;target/arm/translate.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;target/hppa/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;14 &#43;&#43;--</div>\r\n"
- "<div>&nbsp;target/i386/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 132 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;----------------</div>\r\n"
- "<div>&nbsp;target/m68k/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;target/microblaze/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 4 &#43;-</div>\r\n"
- "<div>&nbsp;target/mips/op_helper.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 5 &#43;-</div>\r\n"
- "<div>&nbsp;target/mips/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 8 &#43;-</div>\r\n"
- "<div>&nbsp;target/openrisc/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 4 &#43;-</div>\r\n"
- "<div>&nbsp;target/ppc/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;12 &#43;--</div>\r\n"
- "<div>&nbsp;target/riscv/insn_trans/trans_rva.inc.c | &nbsp; 8 &#43;-</div>\r\n"
- "<div>&nbsp;target/riscv/insn_trans/trans_rvi.inc.c | &nbsp; 4 &#43;-</div>\r\n"
- "<div>&nbsp;target/s390x/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 6 &#43;-</div>\r\n"
- "<div>&nbsp;target/s390x/translate_vx.inc.c &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;10 &#43;--</div>\r\n"
- "<div>&nbsp;target/sparc/cpu.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;</div>\r\n"
- "<div>&nbsp;target/sparc/mmu_helper.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;40 &#43;&#43;&#43;&#43;&#43;&#43;----</div>\r\n"
- "<div>&nbsp;target/sparc/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;14 &#43;&#43;--</div>\r\n"
- "<div>&nbsp;target/tilegx/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;10 &#43;--</div>\r\n"
- "<div>&nbsp;target/tricore/translate.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 8 &#43;-</div>\r\n"
- "<div>&nbsp;tcg/README &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;tcg/aarch64/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;26 &#43;&#43;&#43;----</div>\r\n"
- "<div>&nbsp;tcg/arm/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;26 &#43;&#43;&#43;----</div>\r\n"
- "<div>&nbsp;tcg/i386/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;24 &#43;&#43;&#43;---</div>\r\n"
- "<div>&nbsp;tcg/mips/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;16 &#43;&#43;--</div>\r\n"
- "<div>&nbsp;tcg/optimize.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;tcg/ppc/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;12 &#43;--</div>\r\n"
- "<div>&nbsp;tcg/riscv/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;20 &#43;&#43;---</div>\r\n"
- "<div>&nbsp;tcg/s390/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;14 &#43;&#43;--</div>\r\n"
- "<div>&nbsp;tcg/sparc/tcg-target.inc.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 6 &#43;-</div>\r\n"
- "<div>&nbsp;tcg/tcg-op.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;38 &#43;&#43;&#43;&#43;-----</div>\r\n"
- "<div>&nbsp;tcg/tcg-op.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;86 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-----------</div>\r\n"
- "<div>&nbsp;tcg/tcg.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 2 &#43;-</div>\r\n"
- "<div>&nbsp;tcg/tcg.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;99 &#43;&#43;----------------------</div>\r\n"
- "<div>&nbsp;trace/mem-internal.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 4 &#43;-</div>\r\n"
- "<div>&nbsp;trace/mem.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 4 &#43;-</div>\r\n"
- "<div>&nbsp;51 files changed, 561 insertions(&#43;), 488 deletions(-)</div>\r\n"
- "<div>&nbsp;create mode 100644 include/exec/memop.h</div>\r\n"
- "<div><br>\r\n"
- "</div>\r\n"
- "<div>--&nbsp;</div>\r\n"
- "<div>1.8.3.1</div>\r\n"
- "<div><br>\r\n"
- "<br>\r\n"
- "</div>\r\n"
- "<p><br>\r\n"
- "</p>\r\n"
- "</body>\r\n"
- "</html>\r\n"
 
-31a10d1c5c4f6762c7d074fd45f10379cccf0eeddda8796d58c772607ccf1fe4
+5f3d4d32b287e4b591ff8a1e19b3f72aae71777bc9b91b732e9b8b4902806875

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.