]> git.ameliathe1st.gay Git - voyage-au-centre-des-fichiers.git/commitdiff
Restructured code a bit, to move all snippets of asm to utils.{c,h}pp
authorAmelia Coutard <eliottulio.coutard@gmail.com>
Thu, 12 May 2022 12:23:23 +0000 (14:23 +0200)
committerAmelia Coutard <eliottulio.coutard@gmail.com>
Thu, 12 May 2022 14:56:16 +0000 (16:56 +0200)
src/serial.cpp
src/utils.cpp
src/utils.hpp

index 384ba9d1616b589f0125d330c9a112bcd786bb7c..d353fc8e2fea26bf3be2a1c4eb84ba1c91ce2a76 100644 (file)
@@ -2,14 +2,6 @@
 #include "serial.hpp"
 
 namespace {
-       void outb(std::uint16_t port, std::uint8_t data) {
-               asm volatile ("outb %1,%0" : : "dN"(port), "a"(data));
-       }
-       std::uint8_t inb(std::uint16_t port) {
-               std::uint8_t data;
-               asm volatile ("inb %1,%0" : "=a"(data) : "dN"(port));
-               return data;
-       }
 }
 
 bool os::init_serial_port() {
index 2c53ef64f84a11e0305c59bb2443e18b819bdcbd..5806cb6eacef877113e1aadc2c70728af280c1b4 100644 (file)
@@ -1,9 +1,27 @@
 #include "utils.hpp"
 
+void os::cli() {
+       asm volatile("cli");
+}
+void os::sti() {
+       asm volatile("sti");
+}
+void os::hlt() {
+       asm volatile("hlt");
+}
+
 void os::halt() {
-       asm volatile (
-               "cli\n"
-               "\t1:\thlt\n"
-               "\tjmp 1b"
-       );
+       cli();
+       while (true) {
+               hlt();
+       }
+}
+
+void os::outb(std::uint16_t port, std::uint8_t data) {
+       asm volatile ("outb %1,%0" : : "dN"(port), "a"(data));
+}
+std::uint8_t os::inb(std::uint16_t port) {
+       std::uint8_t data;
+       asm volatile ("inb %1,%0" : "=a"(data) : "dN"(port));
+       return data;
 }
index e2e242fda7b5c44c1a2e91bb9bbed10f74805df8..baa4b0581b500429ed255df769a3c11f6b325cfd 100644 (file)
@@ -1,7 +1,14 @@
 #pragma once
 
+#include <cstdint>
+
 namespace os {
 
+void cli();
+void sti();
+void hlt();
 void halt();
+void outb(std::uint16_t port, std::uint8_t data);
+std::uint8_t inb(std::uint16_t port);
 
 } // namespace os