When used with the "pseries" machine type, QEMU-system-ppc64 implements
a set of hypervisor calls using a subset of the server "PAPR" specification
(IBM internal at this point), which is also what IBM's proprietary hypervisor
adheres too.

The subset is selected based on the requirements of Linux as a guest.

In addition to those calls, we have added our own private hypervisor
calls which are mostly used as a private interface between the firmware
running in the guest and QEMU.

All those hypercalls start at hcall number 0xf000 which correspond
to a implementation specific range in PAPR.

- H_RTAS (0xf000)

RTAS is a set of runtime services generally provided by the firmware
inside the guest to the operating system. It predates the existence
of hypervisors (it was originally an extension to Open Firmware) and
is still used by PAPR to provide various services that aren't performance
sensitive.

We currently implement the RTAS services in QEMU itself. The actual RTAS
"firmware" blob in the guest is a small stub of a few instructions which
calls our private H_RTAS hypervisor call to pass the RTAS calls to QEMU.

Arguments:

  r3 : H_RTAS (0xf000)
  r4 : Guest physical address of RTAS parameter block

Returns:

  H_SUCCESS   : Successfully called the RTAS function (RTAS result
                will have been stored in the parameter block)
  H_PARAMETER : Unknown token

- H_LOGICAL_MEMOP (0xf001)

When the guest runs in "real mode" (in powerpc lingua this means
with MMU disabled, ie guest effective == guest physical), it only
has access to a subset of memory and no IOs.

PAPR provides a set of hypervisor calls to perform cacheable or
non-cacheable accesses to any guest physical addresses that the
guest can use in order to access IO devices while in real mode.

This is typically used by the firmware running in the guest.

However, doing a hypercall for each access is extremely inefficient
(even more so when running KVM) when accessing the frame buffer. In
that case, things like scrolling become unusably slow.

This hypercall allows the guest to request a "memory op" to be applied
to memory. The supported memory ops at this point are to copy a range
of memory (supports overlap of source and destination) and XOR which
is used by our SLOF firmware to invert the screen.

Arguments:

  r3: H_LOGICAL_MEMOP (0xf001)
  r4: Guest physical address of destination
  r5: Guest physical address of source
  r6: Individual element size
        0 = 1 byte
        1 = 2 bytes
        2 = 4 bytes
        3 = 8 bytes
  r7: Number of elements
  r8: Operation
        0 = copy
        1 = xor

Returns:

  H_SUCCESS   : Success
  H_PARAMETER : Invalid argument

