Here is another question, again on ARM. Let's say I want to configure
the VCPU to trap on certain instructions or register accesses. It is
my understanding I can do this by setting either HCR or HSTR to trap
the way I want it to.

I've played with setting HCR how I want it, and it looks like I can
handle the trap in the vm_event function of vm.c, under the
seL4_Fault_VCPUFault case. What I'm unsure of is how to handle the
trap. I need to emulate the trapped instruction, right? Is there a
particularly good place to do that or is it already implemented?

If I switch to using HSTR to trap, where should that be handled? Also
in the seL4_Fault_VCPUFault case?

On Wed, Jun 14, 2017 at 1:17 PM, Mike Clark <[email protected]> wrote:
> Thanks Anna. That is great. Is there a quick and easy way to get up
> and running with hypercalls on ARM?
>
> On Mon, Jun 12, 2017 at 8:17 PM,  <[email protected]> wrote:
>> Hi Mike,
>>
>> We have some pages on the developer wiki. For x86 there is a pretty 
>> comprehensive tutorial on adding a hypercall and more:
>>
>> https://wiki.sel4.systems/CAmkESVM
>>
>> We're starting to develop docs on the ARM vm here: 
>> https://wiki.sel4.systems/CAmkES-ARM-VM but as you can see it's pretty bare. 
>> Note that I don't think the x86 VM instrcutions apply to the ARM VM, as they 
>> are structured differently.
>>
>> Anna.
>>
>>
>> ________________________________________
>> From: Devel <[email protected]> on behalf of Mike Clark 
>> <[email protected]>
>> Sent: Friday, 9 June 2017 10:56 PM
>> To: Danis, Adrian (Data61, Kensington NSW)
>> Cc: [email protected]
>> Subject: Re: [seL4] vmm documentation
>>
>> Okay, so I'll start with something more concrete that should help me
>> understand a few things. Let's say I wanted to implement a hypercall
>> and for the purposes of this discussion, let's assume ARM.
>>
>> A user process on the Linux VM can issue a hypercall with the HVC
>> instruction, right? Where would I need to add code to the VMM to
>> handle this hypercall?
>>
>> Also, it is my understanding that certain instructions will cause a
>> trap into the VMM. Where is that handled?
>>
>> Thanks!
>>
>> On Thu, Jun 8, 2017 at 8:10 PM,  <[email protected]> wrote:
>>> Hi Mike,
>>>
>>> Unfortunately we haven't yet written any documentation on the VMM internals
>>> or how it works. You are actually the first person to express interest in
>>> this. Will try to make it a higher priority to write at least a brief
>>> overview of the structure. For now my advice is to be familiar with CAmkES,
>>> have a built version of the VMM so that you can code search for generated
>>> code and then start exploring from either
>>> https://github.com/seL4/camkes-vm/blob/master/components/Init/src/main.c#L525
>>> or
>>> https://github.com/SEL4PROJ/camkes-arm-vm/blob/master/components/VM/src/main.c#L472
>>> depending on whether you are asking about the arm or x86 VMM.
>>>
>>> Adrian
>>>
>>>
>>> On Fri 09-Jun-2017 2:26 AM, Mike Clark wrote:
>>>
>>> Is there any documentation on how the VMM works? If I wanted to start
>>> hacking on the VMM and extend its capability, where should I start
>>> looking to learn how it works, etc?
>>>
>>> That might be a pretty broad topic, because there are lots of ways the
>>> VMM can be extended, I'm sure. Broad is fine, until I get things more
>>> figured out.
>>>
>>> _______________________________________________
>>> Devel mailing list
>>> [email protected]
>>> https://sel4.systems/lists/listinfo/devel
>>>
>>>
>>
>> _______________________________________________
>> Devel mailing list
>> [email protected]
>> https://sel4.systems/lists/listinfo/devel

_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to