<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openslx-ng/ipxe.git/src/arch/x86_64/include, branch openslx</title>
<subtitle>Fork of ipxe; additional commands and features</subtitle>
<id>https://git.openslx.org/openslx-ng/ipxe.git/atom/src/arch/x86_64/include?h=openslx</id>
<link rel='self' href='https://git.openslx.org/openslx-ng/ipxe.git/atom/src/arch/x86_64/include?h=openslx'/>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/'/>
<updated>2026-01-14T13:25:34+00:00</updated>
<entry>
<title>[build] Mark core files as permitted for UEFI Secure Boot</title>
<updated>2026-01-14T13:25:34+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2026-01-14T13:25:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=6cccb3bdc00359068c07125258d71ce24db5118a'/>
<id>urn:sha1:6cccb3bdc00359068c07125258d71ce24db5118a</id>
<content type='text'>
Mark all files used in a standard build of bin-x86_64-efi/snponly.efi
as permitted for UEFI Secure Boot.  These files represent the core
functionality of iPXE that is guaranteed to have been included in
every binary that was previously subject to a security review and
signed by Microsoft.  It is therefore legitimate to assume that at
least these files have already been reviewed to the required standard
multiple times.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[profile] Standardise return type of profile_timestamp()</title>
<updated>2024-09-24T14:40:45+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2024-09-24T13:49:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=5f7c6bd95bd6089473db3ba4f033584f5de0ee8a'/>
<id>urn:sha1:5f7c6bd95bd6089473db3ba4f033584f5de0ee8a</id>
<content type='text'>
All consumers of profile_timestamp() currently treat the value as an
unsigned long.  Only the elapsed number of ticks is ever relevant: the
absolute value of the timestamp is not used.  Profiling is used to
measure short durations that are generally fewer than a million CPU
cycles, for which an unsigned long is easily large enough.

Standardise the return type of profile_timestamp() as unsigned long
across all CPU architectures.  This allows 32-bit architectures such
as i386 and riscv32 to omit all logic associated with retrieving the
upper 32 bits of the 64-bit hardware counter, which simplifies the
code and allows riscv32 and riscv64 to share the same implementation.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[libc] Centralise architecture-independent portions of setjmp.h</title>
<updated>2024-09-12T14:01:04+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2024-09-12T13:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=5de5d4626e192f5d0e6c97e14ce03b92a43622b3'/>
<id>urn:sha1:5de5d4626e192f5d0e6c97e14ce03b92a43622b3</id>
<content type='text'>
The definitions of the setjmp() and longjmp() functions are common to
all architectures, with only the definition of the jump buffer
structure being architecture-specific.

Move the architecture-specific portions to bits/setjmp.h and provide a
common setjmp.h for the function definitions.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[gdb] Allow CPU architectures to omit support for GDB</title>
<updated>2024-09-05T12:00:39+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2024-09-04T12:29:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=2b82007571dbe02b85338dc9fa85251cd5d68028'/>
<id>urn:sha1:2b82007571dbe02b85338dc9fa85251cd5d68028</id>
<content type='text'>
Move the &lt;gdbmach.h&gt; file to &lt;bits/gdbmach.h&gt;, and provide a common
dummy implementation for all architectures that have not yet
implemented support for GDB.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[build] Allow for per-architecture unprefixed constant operand modifier</title>
<updated>2023-02-05T23:55:14+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2023-02-05T23:55:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=c6901792f009cfd824707724b687e99edd4c8ecd'/>
<id>urn:sha1:c6901792f009cfd824707724b687e99edd4c8ecd</id>
<content type='text'>
Over the years, the undocumented operand modifier used to produce the
unprefixed constant values in __einfo_error() has varied from "%c0" to
"%a0" in commit 1a77466 ("[build] Fix use of inline assembly on GCC
4.8 ARM64 builds") and back to "%c0" in commit 3fb3ffc ("[build] Fix
use of inline assembly on GCC 8 ARM64 builds"), according to the
evolving demands of the toolchain.

LoongArch64 suffers from a similar issue: GCC 13 will allow either,
but the currently released GCC 12 allows only the "%a0" form.

Introduce a macro ASM_NO_PREFIX, defined in bits/compiler.h, to
abstract away this difference and allow different architectures to use
different operand modifiers.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[dhcp] Simplify platform-specific client architecture definitions</title>
<updated>2023-01-22T17:45:34+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2023-01-22T16:54:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=2061d658b3d199ec84976e6a573f68424369be69'/>
<id>urn:sha1:2061d658b3d199ec84976e6a573f68424369be69</id>
<content type='text'>
Move the platform-specific DHCP client architecture definitions to
header files of the form &lt;ipxe/$(PLATFORM)/dhcparch.h&gt;.  This
simplifies the directory structure and allows the otherwise unused
arch/$(ARCH)/include/$(PLATFORM) to be removed from the include
directory search path, which avoids the confusing situation in which a
header file may potentially be accessed through more than one path.

For Linux userspace binaries on any architecture, use the EFI values
for that architecture by delegating to the EFI header file.  This
avoids the need to explicitly select values for Linux userspace
binaries for each architecture.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[build] Allow __asmcall to be used as a type attribute</title>
<updated>2021-03-02T10:15:23+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2021-03-02T10:15:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=916ebef1984e9caa05646463734b51202b405774'/>
<id>urn:sha1:916ebef1984e9caa05646463734b51202b405774</id>
<content type='text'>
The "used" attribute can be applied only to functions or variables,
which prevents the use of __asmcall as a type attribute.

Fix by removing "used" from the definition of __asmcall for i386 and
x86_64 architectures, and adding explicit __used annotations where
necessary.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[linux] Use host glibc system call wrappers</title>
<updated>2021-02-28T23:28:23+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2021-02-28T13:45:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=f309d7a7b78eec10621bc71f9401d5b9257f9f39'/>
<id>urn:sha1:f309d7a7b78eec10621bc71f9401d5b9257f9f39</id>
<content type='text'>
When building as a Linux userspace application, iPXE currently
implements its own system calls to the host kernel rather than relying
on the host's C library.  The output binary is statically linked and
has no external dependencies.

This matches the general philosophy of other platforms on which iPXE
runs, since there are no external libraries available on either BIOS
or UEFI bare metal.  However, it would be useful for the Linux
userspace application to be able to link against host libraries such
as libslirp.

Modify the build process to perform a two-stage link: first picking
out the requested objects in the usual way from blib.a but with
relocations left present, then linking again with a helper object to
create a standard hosted application.  The helper object provides the
standard main() entry point and wrappers for the Linux system calls
required by the iPXE Linux drivers and interface code.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[build] Prevent use of MMX and SSE registers</title>
<updated>2018-03-20T20:01:08+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2018-03-20T19:34:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=1df3b53051e2baa99abd00b2fe71ccfa6672331e'/>
<id>urn:sha1:1df3b53051e2baa99abd00b2fe71ccfa6672331e</id>
<content type='text'>
The existence of MMX and SSE is required by the System V x86_64 ABI
and so is assumed by gcc, but these registers are not preserved by our
own interrupt handlers and are unlikely to be preserved by other
context switch handlers in a boot firmware environment.

Explicitly prevent gcc from using MMX or SSE registers to avoid
potential problems due to silent register corruption.

We must remove the %xmm0-%xmm5 clobbers from the x86_64 version of
hv_call() since otherwise gcc will complain about unknown register
names.  Theoretically, we should probably add code to explicitly
preserve the %xmm0-%xmm5 registers across a hypercall, in order to
guarantee to external code that these registers remain unchanged.  In
practice this is difficult since SSE registers are disabled by
default: for background information see commits 71560d1 ("[librm]
Preserve FPU, MMX and SSE state across calls to virt_call()") and
dd9a14d ("[librm] Conditionalize the workaround for the Tivoli VMM's
SSE garbling").

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[legal] Add missing FILE_LICENCE declarations</title>
<updated>2017-12-29T11:57:00+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-12-29T11:57:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=00c5b958c59ec45736469fce674c5307cabbfd91'/>
<id>urn:sha1:00c5b958c59ec45736469fce674c5307cabbfd91</id>
<content type='text'>
Add missing FILE_LICENCE declarations to x86_64 headers based on the
corresponding i386 headers (from which the x86_64 headers were
originally derived).

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
</feed>
