aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSagar Karandikar <sagark@eecs.berkeley.edu>2016-08-16 10:55:26 -0700
committerAndrew Waterman <waterman@eecs.berkeley.edu>2016-08-16 10:55:26 -0700
commitf73dee6f2cc37cafc4b6949dac9ac2d71cf84d10 (patch)
treef9bbb8309d2de24167063f40e308b2b358adb70e
parent0a7862c79ffcf931d5369d50b15774cc1ec8f396 (diff)
downloadpk-f73dee6f2cc37cafc4b6949dac9ac2d71cf84d10.zip
pk-f73dee6f2cc37cafc4b6949dac9ac2d71cf84d10.tar.gz
pk-f73dee6f2cc37cafc4b6949dac9ac2d71cf84d10.tar.bz2
add htif section in linker script, with ALIGNs to prevent MMIO and data from being placed on same page (#32)
-rw-r--r--bbl/bbl.lds10
-rw-r--r--machine/mtrap.c4
-rw-r--r--pk/pk.lds10
3 files changed, 22 insertions, 2 deletions
diff --git a/bbl/bbl.lds b/bbl/bbl.lds
index c06aa13..6833e47 100644
--- a/bbl/bbl.lds
+++ b/bbl/bbl.lds
@@ -41,6 +41,16 @@ SECTIONS
_etext = .;
/*--------------------------------------------------------------------*/
+ /* HTIF, isolated onto separate page */
+ /*--------------------------------------------------------------------*/
+ . = ALIGN(0x1000);
+ htif :
+ {
+ *(htif)
+ }
+ . = ALIGN(0x1000);
+
+ /*--------------------------------------------------------------------*/
/* Initialized data segment */
/*--------------------------------------------------------------------*/
diff --git a/machine/mtrap.c b/machine/mtrap.c
index bf02fab..a68c0d9 100644
--- a/machine/mtrap.c
+++ b/machine/mtrap.c
@@ -7,8 +7,8 @@
#include <stdarg.h>
#include <stdio.h>
-volatile uint64_t tohost __attribute__((aligned(64)));
-volatile uint64_t fromhost __attribute__((aligned(64)));
+volatile uint64_t tohost __attribute__((aligned(64))) __attribute__((section("htif")));
+volatile uint64_t fromhost __attribute__((aligned(64))) __attribute__((section("htif")));
void __attribute__((noreturn)) bad_trap()
{
diff --git a/pk/pk.lds b/pk/pk.lds
index 522e4a8..1bc9adf 100644
--- a/pk/pk.lds
+++ b/pk/pk.lds
@@ -41,6 +41,16 @@ SECTIONS
_etext = .;
/*--------------------------------------------------------------------*/
+ /* HTIF, isolated onto separate page */
+ /*--------------------------------------------------------------------*/
+ . = ALIGN(0x1000);
+ htif :
+ {
+ *(htif)
+ }
+ . = ALIGN(0x1000);
+
+ /*--------------------------------------------------------------------*/
/* Initialized data segment */
/*--------------------------------------------------------------------*/