| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug#1: The GetStatus() function returns radically different pointers that
do not match any packets we transmitted. I think it might be pointing to
a copy of the packet or something. Since we do not transmit more than
one packet at a time, just wait for "anything".
Bug#2: The Receive() function takes a pointer and a length. However, it
either ignores the length or otherwise does bad things and writes outside
of ptr[0] through ptr[len-1]. This is bad and causes massive stack
corruption for us since we are receiving packets into small buffers on
the stack. Instead, Receive() into a large enough buffer and bcopy the
data to the requested area.
|
|
|
|
|
| |
box that I have. We have no EFI disk drivers yet anyway (maybe that is the
problem).
|
| |
|
|
|
|
|
| |
RB_MULTIPLE since this seems to be the easiest way to add these flags
for non-forth loaders etc.
|
|
|
|
|
|
|
|
|
|
|
| |
- Don't include ia64_cpu.h and cpu.h
- Guard definitions by _NO_NAMESPACE_POLLUTION
- Move definition of KERNBASE to vmparam.h
o Move definitions of IA64_RR_{BASE|MASK} to vmparam.h
o Move definitions of IA64_PHYS_TO_RR{6|7} to vmparam.h
o While here, remove some left-over Alpha references.
|
|
|
|
|
| |
style comments. This is not an attempt to conform to style(9).
Such has lower priority.
|
| |
|
|
|
|
|
| |
INTERNALLIB now implies NOPIC and NOPROFILE.
Removed gratuitous NOMAN.
|
|
|
|
|
| |
defining so many extra things in addition to INTERNALLIB. We don't like
repetitive C code and we shouldn't for make code either.
|
|
|
|
| |
INTERNALLIB now.
|
|
|
|
|
| |
(also resort some CFLAGS such that the more "important" value are first so
they are easier to see)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o We don't expect the PLT relocations to follow the .rela section
anymore. We still assume that PLT relocations are long formed,
o Document register usage,
o Improve ILP,
o Fix the FPTR relocation by creating unique OPDs per function.
Comparing functions is valid now,
o The IPLT relocation naturally handles the addend. Deal with it.
We ignore the addend for FPTR relocations for now. It's not at
all clear what it means anyway.
Fix ABI misinterpretation:
o For Elf_Rela relocations, the addend is explicit and should not
be loaded from the memory address we're relocating. Only do that
for Elf_Rel relocations (ie the short form).
o DIR64LSB is not the same as REL64LSB. DIR64LSB applies to a
symbol (S+A), whereas REL64LSB applies to the base address (BD+A),
|
|
|
|
| |
hardwiring the location.
|
|
|
|
|
|
| |
the S_IFREG bit for regular files. This caused the path search code to
skip it when it finally did find the kernel (after the common/module.c
buffer overrun bug was fixed)
|
|
|
|
| |
resulting binary will be damaged and no longer work.
|
| |
|
| |
|
| |
|
|
|
|
| |
fact that the 'ia64-make' wrapper explicitly set it.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
detects and uses the gas section merge support. As a result, a whole bunch
of new sections arrive, including .rodata.str1.8, which was not included
in our custom ldscript.ia64. The result was a loader binary that EFI
rejected.
While here, collect the loader shell commands linker set and include it
in the data area rather than having its own section.
/boot/loader.efi was the last holdout for having a 100% self built ia64
system.
|
|
|
|
| |
or may have the wrong header files.
|
|
|
|
|
| |
in both the condition and for the install. We expect to find
the help file in ${.OBJDIR}.
|
|
|
|
|
|
|
|
|
| |
register r8. We continue to write the bootinfo block at the same
hardwired address, because the kernel still expects it there.
It is expected that future kernels use register r8 to get to the
bootinfo block and don't depend on the hardwired address anymore.
Bump the loader version once again due to the interface change.
|
|
|
|
|
|
|
|
| |
only care if it's network or not at this time. If we're loaded from
the network, we set currdev (=loaddev) so that the kernel is loaded
from the network as well. In all other cases we initialize to disk.
This makes netbooting more convenient and can easily be enhanced to
do more elaborate checking.
|
|
|
|
|
|
|
| |
Most significantly (from an interfacing point of view) is the
support for the FPSWA pointer passing. Even though that was added
4 months ago, it's probably not a bad idea to bump the version
number to reflect this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o Query the state field of the protocol mode to determine whether
we need to start and/or initialize the protocol. When we're
loaded across the network, the protocol has already been started
and is already initialized. When no networking has happened yet,
we have to start and initialize the protocol ourselves.
o After initialization, we have to set the receive filters. Not
doing this results in a deaf interface. We set the unicast and
broadcast filters. Multicast may not be supported. This specific
change fixes the problem we had that we could not netboot if
the loader was started from the EFI shell.
o To help future debugging, add a function that dumps the current
mode of the interface. It's conditional on EFINET_DEBUG.
o To help in runtime problems, emit a diagnostic message when we
could not initialize the protocol properly.
|
|
|
|
|
|
|
|
|
|
|
| |
an efi_devdesc structure. When we're netbooting, f->f_devdata holds
the address of the network socket variable. Dereferencing this caused
some very unpredictable behaviour, including proper functioning.
So, as a sanity check, we first make sure f->f_dev points to our
own devsw. If not, the open will fail before we use f->f_devdata.
This solves the netboot hangs I invariably got whenever I used the
latest toolchain to compile the EFI loader.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
layer to signal transmission of the packet. This resolves the
problem I'm seeing that an immediate call to net->Receive
after calling net->Transmit returns EFI_DEVICE_ERROR. This
condition seems to be sufficiently persistent that BOOTP and
RARP fail.
o While here, unify all functions to have 'nif' defined. Some
have it as arguments. The others now have them as locals. We
now always get the protocol interface by using the 'nif' var.
The current status of netbooting is that even though we now reliably
have BOOTP working (again), opening a file (ie loading a kernel)
across the network causes the loader to hang. I'm working on that now.
|
| |
|
|
|
|
|
| |
o Add -j .dynstr to objcopy. This makes .efi binaries work
when built with a 3.x based toolchain.
|
| |
|
| |
|
| |
|
|
|
|
| |
the GUID templates.
|
|
|
|
|
| |
kernel before we call ExitBootServices(). I've typed the definitions
in efifpswa.h from the Intel FPSWA manual (urk).
|
|
|
|
|
| |
should go away on ia64, we should be loader metadata based since that is
the only way we can boot (loader, skiload).
|
|
|
|
| |
kernel.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o Make <stdint.h> a symbolic link to <sys/stdint.h>.
o Move most of <sys/inttypes.h> into <sys/stdint.h>, as per C99.
o Remove <sys/inttypes.h>.
o Adjust includes in sys/types.h and boot/efi/include/ia64/efibind.h
to reflect new location of integer types in <sys/stdint.h>.
o Remove previously symbolicly linked <inttypes.h>, instead create a
new file.
o Add MD headers <machine/_inttypes.h> from NetBSD.
o Include <sys/stdint.h> in <inttypes.h>, as required by C99; and
include <machine/_inttypes.h> in <inttypes.h>, to fill in the
remaining requirements for <inttypes.h>.
o Add additional integer types in <machine/ansi.h> and
<machine/limits.h> which are included via <sys/stdint.h>.
Partially obtain from: NetBSD
Tested on: alpha, i386
Discussed on: freebsd-standards@bostonradio.org
Reviewed by: bde, fenner, obrien, wollman
|
|
|
|
| |
with the -D flag.
|
|
|
|
| |
the VM registers. This ought to make things slightly more reliable here.
|
|
|
|
|
| |
respectively. This makes IPLTLSB relocations work properly (these are
generated for weak symbols, particularly for _longjmp).
|
|
|
|
| |
work right though - I can't figure out why.
|
| |
|
| |
|
|
|
|
| |
of minor problems and remove some debugging code.
|
| |
|
|
|
|
| |
it to call ExitBootServices.
|
|
|
|
|
| |
we start changing translation registers. Also, call ExitBootServices
before we jump into the kernel.
|