Kent McLeod [Wed, 14 Feb 2018 05:43:16 +0000 (16:43 +1100)]
Add further -no-pie checks to Rumprun build tools
This builds upon the previous commit to add -no-pie anywhere the
relocatable flag (-Wl,-r) is used to handle compilers that enable -pie
by default (Such as Debian Stretch).
For libcompiler_rt makes use of SSE instructions in its floating point
routines, CR4's OSFXSR flag must be enabled or an #UD exception will
ensue.
This patch also enables the OSXMMEXCPT flag, just to be in sync with
the amd64 version of the boot code.
If LANG is set to some locale that defines the decimal dot to be
something other than a dot (e.g., a comma), then awk will fail to parse
GCC and ld's version numbers.
Ian Jackson [Thu, 6 Oct 2016 11:13:10 +0000 (12:13 +0100)]
librumpxen_xendev: Make WTROUBLE more anaphoric again
In "librumpxen_xendev: xenbus: Reorganise to split minios from
rumpkernel parts" WTROUBLE gained an argument for the common struct
pointer, because the different call sites did (in that patch) call
that struct pointer by different names.
Since "librumpxen_xendev: busdev.c: Rename applicable `d' variables to
`dc'" the common pointer is always `dc', so WTROUBLE can rely on that
again.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Ian Jackson [Thu, 6 Oct 2016 10:51:51 +0000 (11:51 +0100)]
librumpxen_xendev: Rename applicable `d' variables to `du'
This used to be a reference to the shared device context structure.
Now there are three structures. Now there are three structures.
Change all the variables referring to what is now struct
rumpxenbus_data_user to `du'. This completes the elimination of the
conventional variable name `d'. No functional change.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Ian Jackson [Thu, 6 Oct 2016 10:48:25 +0000 (11:48 +0100)]
librumpxen_xendev: Rename applicable `d' variables to `dc'
This used to be a reference to the shared device context structure.
Now there are three structures. Change all the variables referring to
what is now struct rumpxenbus_data_common to `dc'. This includes
about half of the refernces in busdev_user.c. No functional change.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Ian Jackson [Wed, 5 Oct 2016 16:10:49 +0000 (17:10 +0100)]
librumpxen_xendev: Rename applicable `d' variables to `dd'
This used to be a reference to the shared device context structure.
Now there are three structures. Change all the variables referring to
what is now struct rumpxenbus_data_dev to `dd'. This includes all the
references in busdev.c.
No functional change.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Ian Jackson [Fri, 7 Oct 2016 18:00:38 +0000 (19:00 +0100)]
librumpxen_xendev: xenbus: Remove dependency on <inttypes.h> in "user" code
busdev_user.c is compiled in a minios context which sadly lacks
<inttypes.h>. Drop it, and change the one use of PRIx32 to a %lx
(fixing the type of the cast, while we're at it).
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Ian Jackson [Wed, 5 Oct 2016 15:30:59 +0000 (16:30 +0100)]
librumpxen_xendev: xenbus: Reorganise to split minios from rumpkernel parts
Split the xenbus driver into two pieces, busdev.c (in the netbsd
kernel namespacve) and busdev_user.c (in the minios namespace). They
communicate via the (somewhat ad-hoc) interface in busdev_user.h. The
interface uses `rumpxenbus_*' names so that the two sides can call
each other. We split the state structure up into three: a netbsd
part, a minios part, and a common part.
This is actually largely a combination of code motion and function and
type renaming. There is little functional change from the previous
"header abuse" approach, other than some minor interface adjustments.
In much of the code `d' was used to refer to the device struct. Now
there are three context stucts. For now I have retained in each
function the use of `d' which producese the lowest amount of code
churn. The compiler makes sure the types all line up right.
Later, the uses of `d' will each be changed to `dc', `du' or `dd'.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Antti Kantee [Thu, 25 Feb 2016 15:19:01 +0000 (15:19 +0000)]
Revert amd64 pagetable changes.
We need the vga mapped (easy), but we also need the multiboot
info. Since we don't really know where the bootloader is
going to place it, just not worth the fuss, so keep the whole
low meg mapped in the bootstrap page table.
Antti Kantee [Fri, 19 Feb 2016 18:18:40 +0000 (18:18 +0000)]
Treat routed and non-routed interrupts separately.
For systems with routed interrupts, we don't know exactly
how they're routed (since we don't parse acpi tables or
mpbios or any of that rubbish). However, for bog-standard
ISA interrupts we do know where they'll appear. So avoid
calling the non-routed interrupt handler in case of a routed
interrupt and vice versa.
Antti Kantee [Wed, 17 Feb 2016 13:00:22 +0000 (13:00 +0000)]
p-p-p-p-panic: make bmk_isr_rumpkernel() type void
In other words: just panic if something doesn't work out.
It's ~100% likely that the resulting state would not be what
the user wanted in case we'd return an error.
Antti Kantee [Wed, 10 Feb 2016 18:36:54 +0000 (18:36 +0000)]
Travis: group tests according to estimated duration
Attempt to optimize overall throughput that way. The principle
of why ordering thusly helps rests of the solid foundation of
wishful thinking (and observation on how travis usually schedules
the various build jobs).