Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/swtch.S
| Show All 27 Lines | |||||
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
| * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
| * SUCH DAMAGE. | * SUCH DAMAGE. | ||||
| */ | */ | ||||
| #include "assym.inc" | #include "assym.inc" | ||||
| #include "opt_sched.h" | |||||
| #include <machine/param.h> | #include <machine/param.h> | ||||
| #include <machine/asm.h> | #include <machine/asm.h> | ||||
| #include <machine/riscvreg.h> | #include <machine/riscvreg.h> | ||||
| #include <machine/pte.h> | #include <machine/pte.h> | ||||
| .macro __fpe_state_save p | .macro __fpe_state_save p | ||||
| /* | /* | ||||
| * Enable FPE usage in supervisor mode, | * Enable FPE usage in supervisor mode, | ||||
| ▲ Show 20 Lines • Show All 265 Lines • ▼ Show 20 Lines | 1: | ||||
| mv s1, a1 | mv s1, a1 | ||||
| mv s2, a2 | mv s2, a2 | ||||
| mv a0, a1 | mv a0, a1 | ||||
| call _C_LABEL(pmap_activate_sw) | call _C_LABEL(pmap_activate_sw) | ||||
| mv a1, s1 | mv a1, s1 | ||||
| /* Release the old thread */ | /* Release the old thread */ | ||||
| sd s2, TD_LOCK(s0) | sd s2, TD_LOCK(s0) | ||||
| #if defined(SCHED_ULE) && defined(SMP) | #if defined(SMP) | ||||
| /* Spin if TD_LOCK points to a blocked_lock */ | /* Spin if TD_LOCK points to a blocked_lock */ | ||||
| la s2, _C_LABEL(blocked_lock) | la s2, _C_LABEL(blocked_lock) | ||||
| 1: | 1: | ||||
| ld t0, TD_LOCK(a1) | ld t0, TD_LOCK(a1) | ||||
| beq t0, s2, 1b | beq t0, s2, 1b | ||||
| #endif | #endif | ||||
| /* | /* | ||||
| * Restore the saved context. | * Restore the saved context. | ||||
| ▲ Show 20 Lines • Show All 132 Lines • Show Last 20 Lines | |||||