mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-03 14:48:57 +00:00
Implement pmap_sync_icache().
This invokes "fence" on the hart performing the write followed by an IPI to execute "fence.i" on all harts. This is required to support userland debuggers setting breakpoints in user processes. Reviewed by: br (earlier version), markj Approved by: re (gjb) Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D17139
This commit is contained in:
parent
cf4a52cf67
commit
7a102e0463
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=338914
@ -3244,11 +3244,27 @@ pmap_activate(struct thread *td)
|
||||
critical_exit();
|
||||
}
|
||||
|
||||
static void
|
||||
pmap_sync_icache_one(void *arg __unused)
|
||||
{
|
||||
|
||||
__asm __volatile("fence.i");
|
||||
}
|
||||
|
||||
void
|
||||
pmap_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz)
|
||||
{
|
||||
|
||||
panic("RISCVTODO: pmap_sync_icache");
|
||||
/*
|
||||
* From the RISC-V User-Level ISA V2.2:
|
||||
*
|
||||
* "To make a store to instruction memory visible to all
|
||||
* RISC-V harts, the writing hart has to execute a data FENCE
|
||||
* before requesting that all remote RISC-V harts execute a
|
||||
* FENCE.I."
|
||||
*/
|
||||
__asm __volatile("fence");
|
||||
smp_rendezvous(NULL, pmap_sync_icache_one, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user