aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-08-30 16:20:11 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-09-04 20:45:35 -0500
commit7b7428fcea0ccc88b9a9e76adf98f5324dfb6014 (patch)
tree48aa764fb49851730b0388a037f21b9028b52430 /core
parentd2a24406a49fae0948742ddaec1c29a92ca964d0 (diff)
downloadskiboot-7b7428fcea0ccc88b9a9e76adf98f5324dfb6014.zip
skiboot-7b7428fcea0ccc88b9a9e76adf98f5324dfb6014.tar.gz
skiboot-7b7428fcea0ccc88b9a9e76adf98f5324dfb6014.tar.bz2
init: add missing sync_icache after exception vector patching
There are two cases where sync_icache is not called immediately after instructions are modified. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core')
-rw-r--r--core/init.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/init.c b/core/init.c
index a96a69c..8951e17 100644
--- a/core/init.c
+++ b/core/init.c
@@ -384,6 +384,7 @@ static bool load_kernel(void)
if (kernel_entry < 0x2000) {
cpu_set_pm_enable(false);
memcpy(NULL, old_vectors, 0x2000);
+ sync_icache();
}
do_stb = true;
stb_container = kh; /* probably incorrect */
@@ -723,6 +724,7 @@ void setup_reset_vector(void)
dst = (uint32_t *)0x100;
while(src < &reset_patch_end)
*(dst++) = *(src++);
+ sync_icache();
}
void copy_exception_vectors(void)