Re: [PATCH 4/4] KVM: s390: Add a channel I/O based virtio transport driver.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/12/12 19:31, Alexander Graf wrote:
 +static inline long do_kvm_notify(struct subchannel_id schid,
>> +                 unsigned long queue_index)
>> +{
>> +    register unsigned long __nr asm("1") = KVM_S390_VIRTIO_CCW_NOTIFY;
>> +    register struct subchannel_id __schid asm("2") = schid;
> 
> How does the compiler know that the struct fits within a register?
> 

Well it knows that sizeof struct subchannel_id is 4.

then we have 
"ELF Application Binary Interface Supplement Linux on zSeries"

[...]
Parameter passing
[...]
- Structures with a size of 1, 2, 4, or 8 bytes are passed as integral values.  <=============
- All other structures are passed by reference. If needed, the called function makes
  a copy of the value.
[...]

while not being a perfect match it gives a good indication that this will work.

Furthermore, we know it is working at least since 
commit 94c12cc7d196bab34aaa98d38521549fa1e5ef76
Author: Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
Date:   Thu Sep 28 16:56:43 2006 +0200
    [S390] Inline assembly cleanup.

in 
drivers/s390/cio/ioasm.h

[...]
94c12cc7 (Martin Schwidefsky  2006-09-28 16:56:43 +0200  30)    register struct subchannel_id reg1 asm ("1") = schid;
94c12cc7 (Martin Schwidefsky  2006-09-28 16:56:43 +0200  31)    int ccode = -EIO;
fb6958a5 (Cornelia Huck       2006-01-06 00:19:25 -0800  32) 
94c12cc7 (Martin Schwidefsky  2006-09-28 16:56:43 +0200  33)    asm volatile(
[...]

So this complies with the coding style of the s390 maintainer :-)

Christian

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux