.svamem


Q&A

  • Why not all sva code be put into svamem section, instead, just a selected portion of data structures in libsva?

Linker Script

.svamem section

Variables: _svastart, _svaend, SVAPTPages, Used in

  • SVA/SVA/lib/checks.c: to compute svamemlen and being checked against.
    code: svamemlen check

Section Attribute __attribute__ ((section ("svamem"))), used in

SVA/SVA/lib/

  • init.c:
    • static struct gate_descriptor sva_idt[256]
  • interrupt.c:
    • static struct CPUState realCPUState[numProcessors]
    • static int nextIndex; // ???? LLM: thus not all sva code/data are stored in svamem.
  • keys.c:
    • struct translation translations [4096];
  • mmu.c:
    • struct PTInfo PTPages[1024] __attribute__ ((section ("svamem")));
    • extern unsigned char SVAPTPages[1024][X86_PAGE_SIZE]__attribute__ ((section ("svamem")));
  • thread_stack.c: __attribute__ ((aligned (16)))
    • static struct SVAThread Threads[THREAD_STACK_SIZE]
    • static struct FT_stack_fthreads

Reference 1


  1. reference ↩
Created Oct 14, 2019 // Last Updated May 18, 2021

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?