Hi,
I am starting to wonder whether I understood the synchronisation points (e.g.: where TLBs are flushed) correctly. In particular Spike seems to flush the TLBs quite often:
I couldn’t find anything in the privileged specification that 1 or 2 is necessary. According to the specification 3 should not be necessary:
Note that writing satp does not imply any ordering constraints between page-table updates and subsequent address translations. If the new address space’s page tables have been modified, it may be necessary to execute an SFENCE.VMA instruction (see Section 4.2.1) prior to writing satp.
I am asking because I am seeing strange behaviour regarding address translation when booting Linux to user-space on my core. Of-course the most likely is that I am having a bug somewhere but just want to make sure I understood the specification correctly and that flush_tlb in Spike actually has some other side-effect as well (like a pipeline flush for example).
Thanks,
Florian
--
Florian Zaruba
ETH Zurich | Integrated Systems Laboratory | Digital Circuits and Systems Group
ETZ J 89, Gloriastrasse 35, CH-8092 Zurich, Switzerland
m: zar...@iis.ee.ethz.ch | skype: florianzaruba
--