From 65579d29081cb8501e4d7f786747bf12e7b37da2 Mon Sep 17 00:00:00 2001 From: Takayuki 'January June' Suwa Date: Thu, 6 Apr 2023 07:26:34 +0900 Subject: [PATCH] Make precache() cleaner and more efficient (#8903) No need to issue a MEMW instrunction per load from each cache line. Only once after the last load is sufficient. MEMW ensures that all previous load, store, acquire, release, prefetch, and cache instructions perform before performing any subsequent load, store, acquire, release, prefetch, or cache instructions. -- MEMW (Memory Wait), 6. Instruction Descriptions, Xtensa ISA Reference Manual (p.409) --- cores/esp8266/core_esp8266_features.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cores/esp8266/core_esp8266_features.cpp b/cores/esp8266/core_esp8266_features.cpp index 383f3c2d8..fa51ad843 100644 --- a/cores/esp8266/core_esp8266_features.cpp +++ b/cores/esp8266/core_esp8266_features.cpp @@ -38,13 +38,13 @@ void precache(void *f, uint32_t bytes) { // page (ie 1 word in 8) for this to work. #define CACHE_PAGE_SIZE 32 - uint32_t a0; - __asm__("mov.n %0, a0" : "=r"(a0)); - uint32_t lines = (bytes/CACHE_PAGE_SIZE)+2; - volatile uint32_t *p = (uint32_t*)((f ? (uint32_t)f : a0) & ~0x03); - uint32_t x; - for (uint32_t i=0; i