Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


expose RTM cap in CPUID
[palacios.git] / palacios / include / extensions / trans_mem.h
index f8d980e..68a1636 100644 (file)
  * This is free software.  You are permitted to use,
  * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
  *
+RTM Implementation Wishlist (roughly in order of priority)
+Kyle Hale, Maciek Swiech 2014
+
+From Intel Architecture Instruction Set Extensions Programming Reference, Section 8.3, p.8-6
+link: http://software.intel.com/sites/default/files/m/9/2/3/41604
+
+- on XABORT / abort RAX needs to be set with the reason
+- architectural registers need to be saved / restored 
+- exceptions that misuse of TSX instructions can raise
+- abort on interrupts, asynchronous events
+- abort on CPUID, PAUSE
+- abort on non-writeback memory ops, including ifetches to uncacheable mem
+- RTM-debugger support
+- RTM nesting
+- parameterized cache model, for generating hardware configuration-based aborts
+
+- to be able to model specific implementations, add options (runtime or compiletime) to abort on:
+    * x86/mmx state changes, (also fxstor, fxsave),
+    * cli, sti, popfd, popfq, clts
+    * mov to segment regs, pop segment regs, lds, les, lfs, lgs, lss, swapgs, wrfsbase, wrgsbase, lgdt, sgdt, lidt, sidt, lldt, sldt, ltr, 
+      str, far call, far jmp, far ret, far iret, mov to DRx, mov to cr0-4, cr8 lmsw
+    * sysenter, syscall, sysexit, sysret
+    * clflush, invd, wbinvd, invlpg, invpcid
+    * memory instructions with temporal hints (e.g. movntdqa)
+    * xsave, xsaveopt, xrstor
+    * interrupts: INTn, INTO
+    * IO: in, ins, rep ins, out, outs, rep outs, and variants
+    * VMX instructions
+    * smx: getsec
+    * ud2, rsm, rdmsr, wrmsr, hlt, monitor, mwait, xsetbv, vzeroupper, maskmovq, v/maskmovdqu
+    
  *
  *
  * We claim that we can have a single, shared "cache"-like box