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 cachable or
non-cachable 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

