diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2010-10-14 16:23:03 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2010-10-15 15:38:09 -0400 |
commit | a78c942df64ef4cf495fd4d8715e48501bd7f8a4 (patch) | |
tree | fe44212d36e6ca23dbe9f2c633824389216a3d1d /arch/tile/include/hv/hypervisor.h | |
parent | bf65e440e8248f22b2eacf8d47961bb9d52260f7 (diff) |
arch/tile: parameterize system PLs to support KVM port
While not a port to KVM (yet), this change modifies the kernel
to be able to build either at PL1 or at PL2 with a suitable
config switch. Pushing up this change avoids handling branch
merge issues going forward with the KVM work.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/include/hv/hypervisor.h')
-rw-r--r-- | arch/tile/include/hv/hypervisor.h | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/arch/tile/include/hv/hypervisor.h b/arch/tile/include/hv/hypervisor.h index 9bd303a141b2..f672544cd4f9 100644 --- a/arch/tile/include/hv/hypervisor.h +++ b/arch/tile/include/hv/hypervisor.h | |||
@@ -1003,37 +1003,37 @@ int hv_console_write(HV_VirtAddr bytes, int len); | |||
1003 | * when these occur in a client's interrupt critical section, they must | 1003 | * when these occur in a client's interrupt critical section, they must |
1004 | * be delivered through the downcall mechanism. | 1004 | * be delivered through the downcall mechanism. |
1005 | * | 1005 | * |
1006 | * A downcall is initially delivered to the client as an INTCTRL_1 | 1006 | * A downcall is initially delivered to the client as an INTCTRL_CL |
1007 | * interrupt. Upon entry to the INTCTRL_1 vector, the client must | 1007 | * interrupt, where CL is the client's PL. Upon entry to the INTCTRL_CL |
1008 | * immediately invoke the hv_downcall_dispatch service. This service | 1008 | * vector, the client must immediately invoke the hv_downcall_dispatch |
1009 | * will not return; instead it will cause one of the client's actual | 1009 | * service. This service will not return; instead it will cause one of |
1010 | * downcall-handling interrupt vectors to be entered. The EX_CONTEXT | 1010 | * the client's actual downcall-handling interrupt vectors to be entered. |
1011 | * registers in the client will be set so that when the client irets, | 1011 | * The EX_CONTEXT registers in the client will be set so that when the |
1012 | * it will return to the code which was interrupted by the INTCTRL_1 | 1012 | * client irets, it will return to the code which was interrupted by the |
1013 | * interrupt. | 1013 | * INTCTRL_CL interrupt. |
1014 | * | 1014 | * |
1015 | * Under some circumstances, the firing of INTCTRL_1 can race with | 1015 | * Under some circumstances, the firing of INTCTRL_CL can race with |
1016 | * the lowering of a device interrupt. In such a case, the | 1016 | * the lowering of a device interrupt. In such a case, the |
1017 | * hv_downcall_dispatch service may issue an iret instruction instead | 1017 | * hv_downcall_dispatch service may issue an iret instruction instead |
1018 | * of entering one of the client's actual downcall-handling interrupt | 1018 | * of entering one of the client's actual downcall-handling interrupt |
1019 | * vectors. This will return execution to the location that was | 1019 | * vectors. This will return execution to the location that was |
1020 | * interrupted by INTCTRL_1. | 1020 | * interrupted by INTCTRL_CL. |
1021 | * | 1021 | * |
1022 | * Any saving of registers should be done by the actual handling | 1022 | * Any saving of registers should be done by the actual handling |
1023 | * vectors; no registers should be changed by the INTCTRL_1 handler. | 1023 | * vectors; no registers should be changed by the INTCTRL_CL handler. |
1024 | * In particular, the client should not use a jal instruction to invoke | 1024 | * In particular, the client should not use a jal instruction to invoke |
1025 | * the hv_downcall_dispatch service, as that would overwrite the client's | 1025 | * the hv_downcall_dispatch service, as that would overwrite the client's |
1026 | * lr register. Note that the hv_downcall_dispatch service may overwrite | 1026 | * lr register. Note that the hv_downcall_dispatch service may overwrite |
1027 | * one or more of the client's system save registers. | 1027 | * one or more of the client's system save registers. |
1028 | * | 1028 | * |
1029 | * The client must not modify the INTCTRL_1_STATUS SPR. The hypervisor | 1029 | * The client must not modify the INTCTRL_CL_STATUS SPR. The hypervisor |
1030 | * will set this register to cause a downcall to happen, and will clear | 1030 | * will set this register to cause a downcall to happen, and will clear |
1031 | * it when no further downcalls are pending. | 1031 | * it when no further downcalls are pending. |
1032 | * | 1032 | * |
1033 | * When a downcall vector is entered, the INTCTRL_1 interrupt will be | 1033 | * When a downcall vector is entered, the INTCTRL_CL interrupt will be |
1034 | * masked. When the client is done processing a downcall, and is ready | 1034 | * masked. When the client is done processing a downcall, and is ready |
1035 | * to accept another, it must unmask this interrupt; if more downcalls | 1035 | * to accept another, it must unmask this interrupt; if more downcalls |
1036 | * are pending, this will cause the INTCTRL_1 vector to be reentered. | 1036 | * are pending, this will cause the INTCTRL_CL vector to be reentered. |
1037 | * Currently the following interrupt vectors can be entered through a | 1037 | * Currently the following interrupt vectors can be entered through a |
1038 | * downcall: | 1038 | * downcall: |
1039 | * | 1039 | * |