summaryrefslogtreecommitdiff
path: root/src/kernel/core/sys.c
diff options
context:
space:
mode:
authorAlex AUVOLAT <alexis211@gmail.com>2012-05-04 20:06:37 +0200
committerAlex AUVOLAT <alexis211@gmail.com>2012-05-04 20:06:37 +0200
commit277e4af4fa9e80816c809542d792ee6bebb7f202 (patch)
tree9abb7f207d185909427137e4861b81c057de1259 /src/kernel/core/sys.c
parente9683297bf480f9590b0e5796f4520fb430e2e03 (diff)
downloadTCE-277e4af4fa9e80816c809542d792ee6bebb7f202.tar.gz
TCE-277e4af4fa9e80816c809542d792ee6bebb7f202.zip
Migration to C++!
Diffstat (limited to 'src/kernel/core/sys.c')
-rw-r--r--src/kernel/core/sys.c73
1 files changed, 0 insertions, 73 deletions
diff --git a/src/kernel/core/sys.c b/src/kernel/core/sys.c
deleted file mode 100644
index 2c2372d..0000000
--- a/src/kernel/core/sys.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "sys.h"
-#include "monitor.h"
-
-#include "mem/mem.h"
-
-/* These four functions are wrappers around ASM operations.
- These functions are used when comunicating with the system hardware. */
-
-void outb(uint16_t port, uint8_t value) {
- asm volatile("outb %1, %0" : : "dN"(port), "a"(value));
-}
-
-void outw(uint16_t port, uint16_t value) {
- asm volatile("outw %1, %0" : : "dN"(port), "a"(value));
-}
-
-uint8_t inb(uint16_t port) {
- uint8_t ret;
- asm volatile("inb %1, %0" : "=a"(ret) : "dN"(port));
- return ret;
-}
-
-uint16_t inw(uint16_t port) {
- uint16_t ret;
- asm volatile("inw %1, %0" : "=a"(ret) : "dN"(port));
- return ret;
-}
-
-//////
-void stack_trace(size_t bp) {
- uint32_t *stack = (uint32_t*)bp, i;
- for (i = 0; i < 5 && stack > K_HIGHHALF_ADDR && stack < (bp + 0x8000); i++) {
- monitor_write("| "); monitor_writeHex(stack);
- monitor_write("\tnext:"); monitor_writeHex(stack[0]); monitor_write("\t\tret:"); monitor_writeHex(stack[1]);
- monitor_write("\n");
- stack = (uint32_t*)stack[0];
- }
-}
-
-/* For internal use only. Used by panic and panic_assert. */
-static void panic_do(char* file, int line) {
- asm volatile("cli;");
- monitor_write("\n File:\t\t"); monitor_write(file); monitor_put(':'); monitor_writeDec(line);
- monitor_write("\nTrace:\n");
- size_t bp; asm volatile("mov %%ebp,%0" : "=r"(bp)); stack_trace(bp);
- monitor_write("\n\t\tSystem halted -_-'");
- asm volatile("hlt");
-}
-
-/* These functions stop the system, reporting an error message, because something bad happenned. */
-void panic(char* message, char* file, int line) {
- monitor_write("\nPANIC:\t\t"); monitor_write(message);
- panic_do(file, line);
-}
-
-void panic_assert(char* assertion, char* file, int line) {
- monitor_write("\nASSERT FAILED:\t"); monitor_write(assertion);
- panic_do(file, line);
-}
-
-/* Global system mutex. See comments in sys.h. */
-
-static uint32_t if_locks = 1;
-
-void cli() {
- asm volatile("cli");
- if_locks++;
-}
-
-void sti() {
- if (if_locks > 0) if_locks--;
- if (if_locks == 0) asm volatile("sti");
-}