.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\"
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng .
.TH "SN2_GLOBAL_TLB_PURGE" "9" "09 October 2005" "" ""
.SH NAME
sn2_global_tlb_purge \- globally purge translation cache of virtual address range
.SH SYNOPSIS
"SYNOPSIS"
.sp
\fB
.sp
void sn2_global_tlb_purge (unsigned long \fIstart\fB, unsigned long \fIend\fB, unsigned long \fInbits\fB);
\fR
.SH "ARGUMENTS"
.TP
\fB\fIstart\fB\fR
start of virtual address range
.TP
\fB\fIend\fB\fR
end of virtual address range
.TP
\fB\fInbits\fB\fR
specifies number of bytes to purge per instruction (num = 1<<(nbits & 0xfc))
.SH "DESCRIPTION"
.PP
Purges the translation caches of all processors of the given virtual address
range.
.SH "NOTE"
.PP
- cpu_vm_mask is a bit mask that indicates which cpus have loaded the context.
- cpu_vm_mask is converted into a nodemask of the nodes containing the
cpus in cpu_vm_mask.
- if only one bit is set in cpu_vm_mask & it is the current cpu,
then only the local TLB needs to be flushed. This flushing can be done
using ptc.l. This is the common case & avoids the global spinlock.
- if multiple cpus have loaded the context, then flushing has to be
done with ptc.g/MMRs under protection of the global ptc_lock.