mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-11 13:35:03 -04:00
Refactor
This commit is contained in:
parent
20dee4d16c
commit
1286e75791
@ -10,11 +10,37 @@
|
|||||||
|
|
||||||
#include <types.hpp>
|
#include <types.hpp>
|
||||||
|
|
||||||
uint8_t in_byte(uint16_t _port);
|
inline uint8_t in_byte(uint16_t _port){
|
||||||
void out_byte(uint16_t _port, uint8_t _data);
|
uint8_t rv;
|
||||||
|
|
||||||
uint16_t in_word(uint16_t _port);
|
asm volatile ("in %[data], %[port]"
|
||||||
void out_word(uint16_t _port, uint16_t _data);
|
: [data] "=a" (rv)
|
||||||
|
: [port] "dN" (_port));
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint16_t in_word(uint16_t _port){
|
||||||
|
uint16_t rv;
|
||||||
|
|
||||||
|
asm volatile ("in %[data], %[port]"
|
||||||
|
: [data] "=a" (rv)
|
||||||
|
: [port] "dN" (_port));
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void out_byte (uint16_t _port, uint8_t _data){
|
||||||
|
asm volatile ("out %[port], %[data]"
|
||||||
|
: /* No outputs */
|
||||||
|
: [port] "dN" (_port), [data] "a" (_data));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void out_word(uint16_t _port, uint16_t _data){
|
||||||
|
asm volatile ("out %[port], %[data]"
|
||||||
|
: /* No outputs */
|
||||||
|
: [port] "dN" (_port), [data] "a" (_data));
|
||||||
|
}
|
||||||
|
|
||||||
void print_stack(const char* msg, size_t check);
|
void print_stack(const char* msg, size_t check);
|
||||||
#define SHOW_STACK(M) { size_t check = 0; asm volatile("mov %0, rsp;" : "=r" (check)); print_stack(((M)), check); }
|
#define SHOW_STACK(M) { size_t check = 0; asm volatile("mov %0, rsp;" : "=r" (check)); print_stack(((M)), check); }
|
||||||
|
@ -8,38 +8,6 @@
|
|||||||
#include "kernel_utils.hpp"
|
#include "kernel_utils.hpp"
|
||||||
#include "console.hpp"
|
#include "console.hpp"
|
||||||
|
|
||||||
uint8_t in_byte(uint16_t _port){
|
|
||||||
uint8_t rv;
|
|
||||||
|
|
||||||
__asm__ __volatile__ ("in %[data], %[port]"
|
|
||||||
: [data] "=a" (rv)
|
|
||||||
: [port] "dN" (_port));
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t in_word(uint16_t _port){
|
|
||||||
uint16_t rv;
|
|
||||||
|
|
||||||
__asm__ __volatile__ ("in %[data], %[port]"
|
|
||||||
: [data] "=a" (rv)
|
|
||||||
: [port] "dN" (_port));
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
void out_byte (uint16_t _port, uint8_t _data){
|
|
||||||
__asm__ __volatile__ ("out %[port], %[data]"
|
|
||||||
: /* No outputs */
|
|
||||||
: [port] "dN" (_port), [data] "a" (_data));
|
|
||||||
}
|
|
||||||
|
|
||||||
void out_word(uint16_t _port, uint16_t _data){
|
|
||||||
__asm__ __volatile__ ("out %[port], %[data]"
|
|
||||||
: /* No outputs */
|
|
||||||
: [port] "dN" (_port), [data] "a" (_data));
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_stack(const char* s, size_t check){
|
void print_stack(const char* s, size_t check){
|
||||||
printf("%s stack: %u (16B-a:%u) \n", s, check, static_cast<size_t>(check % 16));
|
printf("%s stack: %u (16B-a:%u) \n", s, check, static_cast<size_t>(check % 16));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user