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_fthreadsReference 1
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?