I den folgenden Code bin mit einer Cache-Zeile auf einem Himbeer pi spülen 2:vom Benutzermodus auf ARMv7 (rpi2)
static inline void flush(void addr)
{
asm volatile("mcr p15, 0, %0, c7, c6, 1"::"r"(addr));
}
ich eine Störung erhalte, dass dies ein privilegierter Befehl ist, wenn ich das mache. Ist dieser Code korrekt? Gibt es eine Möglichkeit, die Cache-Zeile aus Benutzerbereich auf diesem Computer zu löschen? Auf x86 clflush
funktioniert ohne jede Änderung.
Bezogen: [Cache auf DRAM flush] (http://stackoverflow.com/questions/18896812/flush-cache-to-dram). Es gibt zwei Ebenen des Caches, L1 und L2, und beide benötigen unterschiedliche Mechanismen zum Leeren (und Ungültigmachen). In der Regel sind diese nur aus einem Supervisor-Modus zulässig, sodass Ihr Betriebssystem einen Mechanismus bereitstellen muss. –