kernel: flush now write-buffered dcache of image before execution
This commit is contained in:
parent
06ad8dfe27
commit
d9bd42389f
@ -23,7 +23,7 @@ pub struct DynamicSection {
|
||||
/// target memory image
|
||||
pub struct Image {
|
||||
layout: Layout,
|
||||
data: &'static mut [u8],
|
||||
pub data: &'static mut [u8],
|
||||
}
|
||||
|
||||
impl Image {
|
||||
|
@ -58,7 +58,7 @@ fn elf_hash(name: &[u8]) -> u32 {
|
||||
}
|
||||
|
||||
pub struct Library {
|
||||
image: Image,
|
||||
pub image: Image,
|
||||
dyn_section: DynamicSection,
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ use log::{debug, error};
|
||||
use alloc::{vec::Vec, sync::Arc};
|
||||
use cslice::CSlice;
|
||||
|
||||
use libcortex_a9::{mutex::Mutex, sync_channel::{self, sync_channel}};
|
||||
use libcortex_a9::{cache::dcci_slice, mutex::Mutex, sync_channel::{self, sync_channel}};
|
||||
use libsupport_zynq::boot::Core1;
|
||||
|
||||
use dyld;
|
||||
@ -313,6 +313,10 @@ pub fn main_core1() {
|
||||
current_modinit = Some(__modinit__);
|
||||
current_typeinfo = library.lookup(b"typeinfo");
|
||||
debug!("kernel loaded");
|
||||
// Flush data cache entries for the image in DDR, including
|
||||
// Memory/Instruction Symchronization Barriers
|
||||
dcci_slice(library.image.data);
|
||||
|
||||
core1_tx.send(Message::LoadCompleted);
|
||||
},
|
||||
Err(error) => {
|
||||
|
Loading…
Reference in New Issue
Block a user