| Zeile 81: | Zeile 81: | ||
Dabei ist <i>outb</i> eine Funktion, um einen 8-Bit-Wert an einen [[I/O Ports | I/O-Port]] zu schreiben, und kann wie in [[Inline-Assembler mit GCC]] beschrieben definiert werden: | Dabei ist <i>outb</i> eine Funktion, um einen 8-Bit-Wert an einen [[I/O Ports | I/O-Port]] zu schreiben, und kann wie in [[Inline-Assembler mit GCC]] beschrieben definiert werden: | ||
| − | <c>static inline void outb( | + | <c>static inline void outb(uint16_t port, uint8_t data) |
{ | { | ||
asm volatile ("outb %0, %1" : : "a" (data), "Nd" (port)); | asm volatile ("outb %0, %1" : : "a" (data), "Nd" (port)); | ||
| Zeile 190: | Zeile 190: | ||
<c>struct cpu_state { | <c>struct cpu_state { | ||
// Von Hand gesicherte Register | // Von Hand gesicherte Register | ||
| − | + | uint32_t eax; | |
| − | + | uint32_t ebx; | |
| − | + | uint32_t ecx; | |
| − | + | uint32_t edx; | |
| − | + | uint32_t esi; | |
| − | + | uint32_t edi; | |
| − | + | uint32_t ebp; | |
| − | + | uint32_t intr; | |
| − | + | uint32_t error; | |
// Von der CPU gesichert | // Von der CPU gesichert | ||
| − | + | uint32_t eip; | |
| − | + | uint32_t cs; | |
| − | + | uint32_t eflags; | |
| − | + | uint32_t esp; | |
| − | + | uint32_t ss; | |
};</c> | };</c> | ||