svamem
section, instead, just a selected portion of data structures in libsva?// file
// sys/conf/ldscript.amd64
/* Create the SVA data section */
_svastart = ALIGN(0x1000);
.svamem ALIGN(0x1000) : {
SVAPTPages = .;
. = . + 4194304;
*(svamem)
_svaend = .;
}
Variables: _svastart, _svaend, SVAPTPages
, Used in
svamemlen
and being checked against.
// file
// SVA/SVA/lib/checks.c
void
sva_check_buffer (uintptr_t start, uintptr_t len) {
...
uintptr_t nstart = start - SECMEMSTART;
uintptr_t nend = end - SECMEMSTART;
if ((nstart <= secmemlen) || (nend <= secmemlen)) {
panic ("SVA: Invalid buffer access: %lx %lx\n", start, end);
}
}
Section Attribute __attribute__ ((section ("svamem")))
, used in
SVA/SVA/lib/
static struct gate_descriptor sva_idt[256]
static struct CPUState realCPUState[numProcessors]
static int nextIndex
; // ???? LLM: thus not all sva code/data are stored in svamem.struct translation translations [4096]
;struct PTInfo PTPages[1024] __attribute__ ((section ("svamem")));
extern unsigned char SVAPTPages[1024][X86_PAGE_SIZE]__attribute__ ((section ("svamem")));
__attribute__ ((aligned (16)))
static struct SVAThread Threads[THREAD_STACK_SIZE]
static struct FT_stack_fthreads
Reference 1
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?