diff options
author | Sagar Karandikar <sagark@eecs.berkeley.edu> | 2016-08-16 10:55:26 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@eecs.berkeley.edu> | 2016-08-16 10:55:26 -0700 |
commit | f73dee6f2cc37cafc4b6949dac9ac2d71cf84d10 (patch) | |
tree | f9bbb8309d2de24167063f40e308b2b358adb70e | |
parent | 0a7862c79ffcf931d5369d50b15774cc1ec8f396 (diff) | |
download | riscv-pk-f73dee6f2cc37cafc4b6949dac9ac2d71cf84d10.zip riscv-pk-f73dee6f2cc37cafc4b6949dac9ac2d71cf84d10.tar.gz riscv-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.lds | 10 | ||||
-rw-r--r-- | machine/mtrap.c | 4 | ||||
-rw-r--r-- | pk/pk.lds | 10 |
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() { @@ -41,6 +41,16 @@ SECTIONS _etext = .; /*--------------------------------------------------------------------*/ + /* HTIF, isolated onto separate page */ + /*--------------------------------------------------------------------*/ + . = ALIGN(0x1000); + htif : + { + *(htif) + } + . = ALIGN(0x1000); + + /*--------------------------------------------------------------------*/ /* Initialized data segment */ /*--------------------------------------------------------------------*/ |