summaryrefslogtreecommitdiffstats
path: root/arch/x86/boot/boot.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/boot/boot.h')
-rw-r--r--arch/x86/boot/boot.h189
1 files changed, 0 insertions, 189 deletions
diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h
deleted file mode 100644
index 54483c46c6..0000000000
--- a/arch/x86/boot/boot.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* SPDX-FileCopyrightText: 1991,1992 Linus Torvalds */
-/* SPDX-FileCopyrightText: 2007 rPath, Inc. */
-/* SPDX-FileCopyrightText: 2009 Intel Corporation */
-
-/* Author: H. Peter Anvin and others */
-
-/**
- * @file
- * @brief Main declarations for the real mode code
- */
-
-#ifndef BOOT_BOOT_H
-#define BOOT_BOOT_H
-
-#define STACK_SIZE 512 /* Minimum number of bytes for stack */
-
-/** Carry flag */
-#define X86_EFLAGS_CF 0x00000001
-
-/** PE flag */
-#define X86_CR0_PE 0x00000001
-
-#ifndef __ASSEMBLY__
-
-#include <types.h>
-
-/* we are still in real mode here! */
-#define THIS_IS_REALMODE_CODE asm(".code16gcc");
-
-struct biosregs {
- union {
- struct {
- uint32_t edi;
- uint32_t esi;
- uint32_t ebp;
- uint32_t _esp;
- uint32_t ebx;
- uint32_t edx;
- uint32_t ecx;
- uint32_t eax;
- uint32_t _fsgs;
- uint32_t _dses;
- uint32_t eflags;
- };
- struct {
- uint16_t di, hdi;
- uint16_t si, hsi;
- uint16_t bp, hbp;
- uint16_t _sp, _hsp;
- uint16_t bx, hbx;
- uint16_t dx, hdx;
- uint16_t cx, hcx;
- uint16_t ax, hax;
- uint16_t gs, fs;
- uint16_t es, ds;
- uint16_t flags, hflags;
- };
- struct {
- uint8_t dil, dih, edi2, edi3;
- uint8_t sil, sih, esi2, esi3;
- uint8_t bpl, bph, ebp2, ebp3;
- uint8_t _spl, _sph, _esp2, _esp3;
- uint8_t bl, bh, ebx2, ebx3;
- uint8_t dl, dh, edx2, edx3;
- uint8_t cl, ch, ecx2, ecx3;
- uint8_t al, ah, eax2, eax3;
- };
- };
-};
-
-/* functions in the realmode part */
-extern int enable_a20(void);
-extern void initregs(struct biosregs *regs);
-extern void intcall(uint8_t int_no, const struct biosregs *ireg, struct biosregs *oreg);
-extern void boot_puts(char*);
-extern void __attribute__((noreturn)) die(void);
-extern void __attribute__((noreturn)) protected_mode_jump(void);
-
-struct gdt_ptr {
- uint16_t len;
- uint32_t ptr;
-} __attribute__((packed));
-
-/* These functions are used to reference data in other segments. */
-
-static inline uint16_t ds(void)
-{
- uint16_t seg;
- asm("movw %%ds,%0" : "=rm" (seg));
- return seg;
-}
-
-static inline void set_fs(uint16_t seg)
-{
- asm volatile("movw %0,%%fs" : : "rm" (seg));
-}
-
-static inline uint16_t fs(void)
-{
- uint16_t seg;
- asm volatile("movw %%fs,%0" : "=rm" (seg));
- return seg;
-}
-
-static inline void set_gs(uint16_t seg)
-{
- asm volatile("movw %0,%%gs" : : "rm" (seg));
-}
-
-static inline uint16_t gs(void)
-{
- uint16_t seg;
- asm volatile("movw %%gs,%0" : "=rm" (seg));
- return seg;
-}
-
-typedef unsigned int addr_t;
-
-static inline uint8_t rdfs8(addr_t addr)
-{
- uint8_t v;
- asm volatile("movb %%fs:%1,%0" : "=q" (v) : "m" (*(uint8_t *)addr));
- return v;
-}
-static inline uint16_t rdfs16(addr_t addr)
-{
- uint16_t v;
- asm volatile("movw %%fs:%1,%0" : "=r" (v) : "m" (*(uint16_t *)addr));
- return v;
-}
-static inline uint32_t rdfs32(addr_t addr)
-{
- uint32_t v;
- asm volatile("movl %%fs:%1,%0" : "=r" (v) : "m" (*(uint32_t *)addr));
- return v;
-}
-
-static inline void wrfs8(uint8_t v, addr_t addr)
-{
- asm volatile("movb %1,%%fs:%0" : "+m" (*(uint8_t *)addr) : "qi" (v));
-}
-static inline void wrfs16(uint16_t v, addr_t addr)
-{
- asm volatile("movw %1,%%fs:%0" : "+m" (*(uint16_t *)addr) : "ri" (v));
-}
-static inline void wrfs32(uint32_t v, addr_t addr)
-{
- asm volatile("movl %1,%%fs:%0" : "+m" (*(uint32_t *)addr) : "ri" (v));
-}
-
-static inline uint8_t rdgs8(addr_t addr)
-{
- uint8_t v;
- asm volatile("movb %%gs:%1,%0" : "=q" (v) : "m" (*(uint8_t *)addr));
- return v;
-}
-static inline uint16_t rdgs16(addr_t addr)
-{
- uint16_t v;
- asm volatile("movw %%gs:%1,%0" : "=r" (v) : "m" (*(uint16_t *)addr));
- return v;
-}
-static inline uint32_t rdgs32(addr_t addr)
-{
- uint32_t v;
- asm volatile("movl %%gs:%1,%0" : "=r" (v) : "m" (*(uint32_t *)addr));
- return v;
-}
-
-static inline void wrgs8(uint8_t v, addr_t addr)
-{
- asm volatile("movb %1,%%gs:%0" : "+m" (*(uint8_t *)addr) : "qi" (v));
-}
-static inline void wrgs16(uint16_t v, addr_t addr)
-{
- asm volatile("movw %1,%%gs:%0" : "+m" (*(uint16_t *)addr) : "ri" (v));
-}
-static inline void wrgs32(uint32_t v, addr_t addr)
-{
- asm volatile("movl %1,%%gs:%0" : "+m" (*(uint32_t *)addr) : "ri" (v));
-}
-
-/** use the built in memset function for the real mode code */
-#define memset(d,c,l) __builtin_memset(d,c,l)
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* BOOT_BOOT_H */