make a directory to store x86-generic stuff
This commit is contained in:
parent
8b4fde6686
commit
e3d032e84e
|
|
@ -17,7 +17,7 @@ LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
|
||||||
TARGET := kernel
|
TARGET := kernel
|
||||||
|
|
||||||
CFILES := $(shell find src -path src/arch -prune -o -type f -name '*.c' -print)
|
CFILES := $(shell find src -path src/arch -prune -o -type f -name '*.c' -print)
|
||||||
ARCHFILES := $(shell find src/arch/$(ARCH) -type f -name '*.c' -print)
|
ARCHFILES := $(ARCHFILES) $(shell find src/arch/$(ARCH) -type f -name '*.c' -print)
|
||||||
HFILES := $(shell find src -type f -name '*.h')
|
HFILES := $(shell find src -type f -name '*.h')
|
||||||
OBJ := $(patsubst src/%.c,obj/$(ARCH)/%.o,$(CFILES) $(ARCHFILES))
|
OBJ := $(patsubst src/%.c,obj/$(ARCH)/%.o,$(CFILES) $(ARCHFILES))
|
||||||
|
|
||||||
|
|
@ -25,17 +25,14 @@ OBJ := $(patsubst src/%.c,obj/$(ARCH)/%.o,$(CFILES) $(ARCHFILES))
|
||||||
|
|
||||||
all: bin/$(TARGET)-$(ARCH)
|
all: bin/$(TARGET)-$(ARCH)
|
||||||
|
|
||||||
bin/$(TARGET)-$(ARCH): $(OBJ)
|
bin/$(TARGET)-$(ARCH): $(OBJ) dirs
|
||||||
mkdir -p bin
|
|
||||||
$(LD) $(LDFLAGS) $(OBJ) -o $@
|
$(LD) $(LDFLAGS) $(OBJ) -o $@
|
||||||
|
|
||||||
obj/$(ARCH)/%.o: src/%.c $(HFILES)
|
obj/$(ARCH)/%.o: src/%.c $(HFILES) dirs
|
||||||
@mkdir -p obj/$(ARCH)/arch/$(ARCH)
|
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
dirs:
|
dirs:
|
||||||
mkdir -p bin obj
|
mkdir -p bin $(patsubst src/%,obj/$(ARCH)/%, $(shell find src/* -type d -print))
|
||||||
mkdir -p $(patsubst src/%,obj/%, $(shell find src -type d -print))
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf bin obj zig-cache
|
rm -rf bin obj zig-cache
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
ARCHFILES := $(shell find src/arch/x86 -type f -name '*.c' -print)
|
||||||
|
|
@ -1 +1,4 @@
|
||||||
ARCH_CFLAGS = -mcmodel=kernel
|
-include make/x86/make.config
|
||||||
|
|
||||||
|
ARCH_CFLAGS := -mcmodel=kernel
|
||||||
|
ARCH_SRC := $(ARCH_SRC) $(shell find src/arch/x86_64 -type f -name '*.c' -print)
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
#include <stdint.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
#include "vga.h"
|
|
||||||
|
|
||||||
static const size_t VGA_WIDTH = 80;
|
|
||||||
static const size_t VGA_HEIGHT = 25;
|
|
||||||
|
|
||||||
static volatile size_t terminal_row;
|
|
||||||
static volatile size_t terminal_column;
|
|
||||||
static volatile uint8_t current_color = VGA_WHITE;
|
|
||||||
static uint16_t *terminal_buffer = (uint16_t*)0xb8000;
|
|
||||||
|
|
||||||
void vga_putc(char c) {
|
|
||||||
size_t index = terminal_row*VGA_WIDTH + terminal_column;
|
|
||||||
if(c == '\t') {
|
|
||||||
vga_putc(' ');
|
|
||||||
while(terminal_column % 8 != 0) {
|
|
||||||
vga_putc(' ');
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(c != '\n' && c != '\t')
|
|
||||||
terminal_buffer[index] = (uint16_t)c | (uint16_t)(current_color) << 8;
|
|
||||||
|
|
||||||
if (c == '\n' || ++terminal_column == VGA_WIDTH) {
|
|
||||||
terminal_column = 0;
|
|
||||||
if (++terminal_row == VGA_HEIGHT)
|
|
||||||
terminal_row = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vga_puts(char *c) {
|
|
||||||
char cur = *(c++);
|
|
||||||
while(cur != '\0') {
|
|
||||||
vga_putc(cur);
|
|
||||||
cur = *(c++);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vga_setcolor(uint8_t new_color) {
|
|
||||||
current_color = new_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
void vga_write_elsewhere(char *c, size_t y, size_t x) {
|
|
||||||
size_t old_row = terminal_row;
|
|
||||||
size_t old_column = terminal_column;
|
|
||||||
terminal_row = y;
|
|
||||||
terminal_column = x;
|
|
||||||
vga_puts(c);
|
|
||||||
terminal_row=old_row;
|
|
||||||
terminal_column=old_column;
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define VGA_BLACK 0
|
|
||||||
#define VGA_BLUE 1
|
|
||||||
#define VGA_GREEN 2
|
|
||||||
#define VGA_CYAN 3
|
|
||||||
#define VGA_RED 4
|
|
||||||
#define VGA_PURPLE 5
|
|
||||||
#define VGA_BROWN 6
|
|
||||||
#define VGA_GRAY 7
|
|
||||||
#define VGA_DARK_GRAY 8
|
|
||||||
#define VGA_LIGHT_BLUE 9
|
|
||||||
#define VGA_LIGH_GREEN 10
|
|
||||||
#define VGA_LIGHT_CYAN 11
|
|
||||||
#define VGA_LIGHT_RED 12
|
|
||||||
#define VGA_LIGHT_PURPLE 13
|
|
||||||
#define VGA_YELLOW 14
|
|
||||||
#define VGA_WHITE 15
|
|
||||||
|
|
||||||
void vga_putc(char c);
|
|
||||||
void vga_puts(char *c);
|
|
||||||
void vga_setcolor(uint8_t color);
|
|
||||||
void vga_write_elsewhere(char *c, size_t y, size_t x);
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#include "arch/x86_64/vga.h"
|
#include "arch/x86/vga.h"
|
||||||
#include "hal/ops.h"
|
#include "hal/ops.h"
|
||||||
|
|
||||||
void kmain(int argc, char **argv) {
|
void kmain(int argc, char **argv) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue