diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-15 07:53:22 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-15 07:53:22 +0000 |
commit | c46479e146062205f7bf1f1d73d9dde277251cf2 (patch) | |
tree | 126ac23af01755de160adac30e27157781e5bb9a /arch/sparc/kernel/tsb.S | |
parent | 2684a6c505531426bb7d4c8a68aab91abe6af05c (diff) | |
parent | fbc4ea9a080b1523a6e77562645d9d79c6368a25 (diff) | |
download | v4.4-nougat-iot-release.tar.gz |
release-request-65fa9893-af48-4e1d-bbfd-0ad00ce88026-for-git_nyc-iot-release-4273224 snap-temp-L21600000093073568android-n-iot-release-smart-display-r2android-n-iot-release-smart-displayandroid-n-iot-release-polk-at1android-n-iot-release-lg-thinq-wk7android-n-iot-release-ihome-igv1nougat-iot-release
Change-Id: I9624021a4a6df994f06c0dcbee05ce5a15a11cfa
Diffstat (limited to 'arch/sparc/kernel/tsb.S')
-rw-r--r-- | arch/sparc/kernel/tsb.S | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/sparc/kernel/tsb.S b/arch/sparc/kernel/tsb.S index 395ec1800530..7d961f6e3907 100644 --- a/arch/sparc/kernel/tsb.S +++ b/arch/sparc/kernel/tsb.S @@ -375,6 +375,7 @@ tsb_flush: * %o1: TSB base config pointer * %o2: TSB huge config pointer, or NULL if none * %o3: Hypervisor TSB descriptor physical address + * %o4: Secondary context to load, if non-zero * * We have to run this whole thing with interrupts * disabled so that the current cpu doesn't change @@ -387,6 +388,17 @@ __tsb_context_switch: rdpr %pstate, %g1 wrpr %g1, PSTATE_IE, %pstate + brz,pn %o4, 1f + mov SECONDARY_CONTEXT, %o5 + +661: stxa %o4, [%o5] ASI_DMMU + .section .sun4v_1insn_patch, "ax" + .word 661b + stxa %o4, [%o5] ASI_MMU + .previous + flush %g6 + +1: TRAP_LOAD_TRAP_BLOCK(%g2, %g3) stx %o0, [%g2 + TRAP_PER_CPU_PGD_PADDR] |