compiled with gcc and linked into the hvmloader as a byte-array.
Hvmloader allocates memory (rounded up to next 64kb) from the e820
table
below 4GB, copies and relocates the 32bit code in the allocated area
and
copies a jumptable (located in a section '.biosjumptable') pointing to
the 'exported' functions into the Bochs BIOS's memory area to link the
two code sections. The memory area has been reserved and can be
identified with the signature '___JMPT'.
In the Bochs BIOS only stub functions are provided. These load the
index
of a particular function in the jump table, switch to protected mode
and
call the function in the high memory area. The stack is prepared such
that functions compiled by gcc can just pick the parameters from the
stack as usual - this means that the 16bit real-mode return address is
taken off the stack. The stub functions should have the same signature
as those in 32bit space. For ABI compatibility reasons parameters
inside
the Bochs BIOS stubs should all be 32bit wide.
This patch includes a test function that calls three gcc-compiled
functions in the high memory area and displays their success status.
Simple tests are done doing multiplication and addition of 32-bit
numbers and reading and modification of a static variable. These
functions test the interface and the relocation code. The test code is
removed in patch part 3.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
- Handle returned backend==NULL || mac==NULL, this leads sometimes to a crash.
- Remove unnecessary (and bogus) initialisation of np->rx.req_prod_pvt
Signed-off-by: Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
- some cleanup to mkbuildtree
- adjustment to the fake __supported_pte_mask definition (removing the
export for x86-64 in native Linux is being discussed, so this shouldn't be
i386 specific)
- remove odd/unused defines (mostly CONFIG_*) in overrides.mk
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Make some arch-specific #defines for page table handling
available unconditionally, add a suffix to avoid name clashes.
The versions without suffix are defined depending on the
architecture like they used to, so code using them continues
to work.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
---
tools/libxc/xg_private.h | 114 +++++++++++++++++++++++++++--------------------
1 file changed, 67 insertions(+), 47 deletions(-)
XC_INVALID_PARAM
such as asking for features unsupported by either xen or guest kernel.
XC_OUT_OF_MEMORY
no comment ;)
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
---
tools/libxc/xc_private.c | 4 ++++
tools/libxc/xenctrl.h | 2 ++
2 files changed, 6 insertions(+)
This patch adds a script to generate headers with arch-specific
structs which can be included on any architecture. Can be used
to deal with structs of "foreign" architectures, needed for
32-on-64 support for example.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
---
Makefile | 11 +-
tools/Rules.mk | 2
xen/Makefile | 4
xen/include/public/foreign/Makefile | 37 +++++++
xen/include/public/foreign/mkchecker.py | 58 +++++++++++
xen/include/public/foreign/mkheader.py | 153 ++++++++++++++++++++++++++++++
xen/include/public/foreign/reference.size | 17 +++
xen/include/public/foreign/structs.py | 52 ++++++++++
8 files changed, 331 insertions(+), 3 deletions(-)
This patch makes libelf available to the tools, by symlinking the source
files and compiling them into libxc.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
---
tools/libxc/Makefile | 15 +++++++++++++++
1 file changed, 15 insertions(+)
This patch adds a library with a small collection of helper functions
to parse and load elf binaries. The library handles endianess and
elfsize at runtime.
The patch also shuffles around the include files a bit. Now there is
*one* include file holding all the elf structures
(xen/include/public/elfstructs.h) which is included by everyone who
needs them.
It's dead code with this patch only, putting the code into use happens
in followup patches.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
---
tools/libxc/xc_elf.h | 525 -----------------------------------
xen/arch/x86/boot/mkelf32.c | 2
xen/common/Makefile | 2
xen/common/libelf/Makefile | 4
xen/common/libelf/README | 1
xen/common/libelf/libelf-dominfo.c | 420 ++++++++++++++++++++++++++++
xen/common/libelf/libelf-loader.c | 156 ++++++++++
xen/common/libelf/libelf-private.h | 51 +++
xen/common/libelf/libelf-relocate.c | 345 +++++++++++++++++++++++
xen/common/libelf/libelf-tools.c | 225 +++++++++++++++
xen/include/public/elfstructs.h | 527 ++++++++++++++++++++++++++++++++++++
xen/include/public/libelf.h | 238 ++++++++++++++++
xen/include/xen/elf.h | 490 ---------------------------------
13 files changed, 1972 insertions(+), 1014 deletions(-)
Made serial/vnc consoles a 'fake' device so that we can take advantage
of storing state information in xenstore.
Signed-off-by: Alastair Tse <atse@xensource.com>