From 39713a3736145483dd3310c3605f940ca34f05c3 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 12 Apr 2021 10:13:21 +0200 Subject: Refactoring --- src/utils/asm.h | 13 ------- src/utils/framebuffer.c | 58 ----------------------------- src/utils/framebuffer.h | 27 -------------- src/utils/gdt.c | 98 ------------------------------------------------- src/utils/gdt.h | 77 -------------------------------------- src/utils/mem.c | 8 ---- src/utils/mem.h | 8 ---- src/utils/paging.c | 31 ---------------- src/utils/paging.h | 10 ----- src/utils/syscall.c | 19 ---------- src/utils/syscall.h | 6 --- src/utils/types.h | 9 ----- 12 files changed, 364 deletions(-) delete mode 100644 src/utils/asm.h delete mode 100644 src/utils/framebuffer.c delete mode 100644 src/utils/framebuffer.h delete mode 100644 src/utils/gdt.c delete mode 100644 src/utils/gdt.h delete mode 100644 src/utils/mem.c delete mode 100644 src/utils/mem.h delete mode 100644 src/utils/paging.c delete mode 100644 src/utils/paging.h delete mode 100644 src/utils/syscall.c delete mode 100644 src/utils/syscall.h delete mode 100644 src/utils/types.h (limited to 'src/utils') diff --git a/src/utils/asm.h b/src/utils/asm.h deleted file mode 100644 index be265d8..0000000 --- a/src/utils/asm.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef ASM_H -#define ASM_H - -#define outb(port,value) \ - asm volatile ("outb %%al, %%dx" :: "a"(value), "d" (port) ) - -#define outbj(port,value) \ - asm volatile ("outb %%al, %%dx;" :: "a" (value), "d"(port) ) - -#define inb(port,dst) \ - asm volatile ("inb %%dx, %%al": "=a" (dst) : "d" (port)) - -#endif \ No newline at end of file diff --git a/src/utils/framebuffer.c b/src/utils/framebuffer.c deleted file mode 100644 index 110dc73..0000000 --- a/src/utils/framebuffer.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "framebuffer.h" - -#define MAX_COL 80 -#define MAX_LINE 25 - -VIDEO_STATE VS={ - (u8 *)0xB8000, - 0, - 0, - BLACK, - GRAY, -}; - -void putchar(char c){ - // Handle newline here - if(c=='\n'){ - VS.col=0; - VS.line+=1; - if(VS.line>=MAX_LINE){ - VS.line=MAX_LINE-1; - scrollup(); - } - return; - } - - // Print char - VS.mem[VS.col*2+MAX_COL*VS.line*2]=c; - VS.mem[VS.col*2+MAX_COL*VS.line*2+1]=VS.fg|VS.bg<<4; - - // Refresh location - VS.col+=1; - if(VS.col>= MAX_COL){ - VS.col=0; - VS.line+=1; - if(VS.line>=MAX_LINE){ - VS.line=MAX_LINE-1; - scrollup(); - } - } -} - -void clear(){ - for(char i=0;i> 16) & 0xFF; - u16 access=entry.access & 0xFF; - u16 limit=(entry.limit >> 16) & 0xF; // Remember: limits it is on 20 bits so 4 last bits - u8 flags=entry.flags & 0xF; - u8 base2=entry.base >> 24; // Take the last 8 bits - descriptor[1]=base|access<<8|limit<<16|flags<<20|base2<<24; - - // Copy descriptor into memory - memcpy(descriptor,(void*)GDTR.base+8*id,8); // Each entry is 64 bits (8 bytes) -} - -int gdt_user_ds_base(){ - char *addr=(char*)GDTR.base+48; - int *base0_15=(int*)addr+2; - int *base16_31=(int*)addr+7; - int base0_15_content=*base0_15 & 0xFFFF; - int base16_21_content=*base16_31 & 0xFFFF; - return(base16_21_content<<16 & base0_15_content); -} \ No newline at end of file diff --git a/src/utils/gdt.h b/src/utils/gdt.h deleted file mode 100644 index f010891..0000000 --- a/src/utils/gdt.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef GDT_H -#define GDT_H - -#include "types.h" - -#define GDT_MAX_ENTRIES 8 - -// Access byte -#define GDT_AC 1 // Access bit -#define GDT_RW 1 << 1 // Read/Write bit -#define GDT_DC 1 << 2 // Direction bit/Conforming bit -#define GDT_EXEC 1 << 3 // Executable bit -#define GDT_S 1 << 4 // Descriptor type -#define GDT_PRVL_0 0 // Privilege (from 0 to 3) -#define GDT_PRVL_1 1 << 5 -#define GDT_PRVL_2 2 << 5 -#define GDT_PRVL_3 3 << 5 -#define GDT_PR 1 << 7 // Present Bit - -// Flags -#define GDT_SZ 1 << 2 // Size bit -#define GDT_GR 1 << 3 // Granularity bit - -typedef struct GDT_ENTRY { - u32 base; - u32 limit; - u8 flags; - u8 access; -} GDT_ENTRY; - -struct GDT_REGISTER { - u16 limit; - u32 base; -} __attribute__((packed)); - -typedef struct GDT_TSS { - u16 previous_task,previous_task_unused; - u32 esp0; - u16 ss0, ss0_unused; - u32 esp1; - u16 ss1, ss1_unused; - u32 esp2; - u16 ss2, ss2_unused; - u32 cr3; - u32 eip; - u32 eflags; - u32 eax; - u32 ecx; - u32 edx; - u32 ebx; - u32 esp; - u32 ebp; - u32 esi; - u32 edi; - u16 es, es_reserved; - u16 cs, cs_reserved; - u16 ss, ss_reserved; - u16 ds, ds_reserved; - u16 fs, fs_reserved; - u16 gs, gs_reserved; - u16 ldtss, ldtss_reserved; - u16 t_reserved, io_map; -} __attribute__((packed)) GDT_TSS; - -/** - * Copy GDT in memory - */ -void gdt_memcpy(); - -/** - * Write a GDT entry at address addr - */ -void gdt_write_entry(GDT_ENTRY entry, u32 id); - -int gdt_user_ds_base(); - -#endif diff --git a/src/utils/mem.c b/src/utils/mem.c deleted file mode 100644 index 4cefd6d..0000000 --- a/src/utils/mem.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "mem.h" - -void memcpy(void *src, void *dst, int size){ - u8 *char_src=(u8 *)src; - u8 *char_dst=(u8 *)dst; - for(int i=0;i