From f90c075d5061b3a89316d6bf3d5b190d49049ccd Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Wed, 24 Mar 2021 15:42:20 -0500 Subject: renamed: kernel/include/acpi.h -> include/acpi.h renamed: kernel/include/libc.h -> include/libc.h renamed: kernel/include/paging.h -> include/paging.h renamed: kernel/include/printf.h -> include/printf.h renamed: kernel/include/serial.h -> include/serial.h renamed: kernel/include/video.h -> include/video.h new file: indigo_os renamed: kernel/libs/acpi.c -> kernel/acpi.c renamed: kernel/libs/drivers/serial.c -> kernel/drivers/serial.c renamed: kernel/libs/drivers/video.c -> kernel/drivers/video.c renamed: kernel/libs/libc.c -> kernel/libc.c renamed: kernel/libs/page.c -> kernel/page.c renamed: kernel/libs/printf.c -> kernel/printf.c renamed: kernel/libs/printf.h -> kernel/printf.h modified: makefile --- src/kernel/include/acpi.h | 39 --------------- src/kernel/include/libc.h | 12 ----- src/kernel/include/paging.h | 71 --------------------------- src/kernel/include/printf.h | 117 -------------------------------------------- src/kernel/include/serial.h | 16 ------ src/kernel/include/video.h | 51 ------------------- 6 files changed, 306 deletions(-) delete mode 100644 src/kernel/include/acpi.h delete mode 100644 src/kernel/include/libc.h delete mode 100644 src/kernel/include/paging.h delete mode 100644 src/kernel/include/printf.h delete mode 100644 src/kernel/include/serial.h delete mode 100644 src/kernel/include/video.h (limited to 'src/kernel/include') diff --git a/src/kernel/include/acpi.h b/src/kernel/include/acpi.h deleted file mode 100644 index c15e044..0000000 --- a/src/kernel/include/acpi.h +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include - -struct rsdp_v1 { - char sig[8]; - uint8_t checksum; - char OEMID[6]; - uint8_t version; - uint32_t rsdt_addr; - -} __attribute__((packed)); - -struct rsdp_v2 { - struct rsdp_v1 v1; - uint32_t len; - uint64_t xsdt_addr; - uint8_t extended_checksum; - uint8_t reserved[3]; -} __attribute__((packed)); - - -typedef union rsdp_t { - struct rsdp_v1 v1; - struct rsdp_v2 v2; -} rsdp_t; - -struct acpi_header { - char sig[4]; - uint32_t length; - uint8_t revision; - uint8_t checksum; - char OEMID[6]; - char OEMTableID[8]; - uint32_t OEMRevision; - uint32_t creator_id; - uint32_t creator_revision; -} __attribute__((packed)); - -rsdp_t *find_RSDP(); diff --git a/src/kernel/include/libc.h b/src/kernel/include/libc.h deleted file mode 100644 index cdf6dbc..0000000 --- a/src/kernel/include/libc.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _STRING_H_ -#define _STRING_H_ -#include - -int strcmp(const char *str1, const char *str2); -int strncmp(const char *str1, const char *str2, size_t n); -void strcpy(char *dest, char *src); -void memcpy(void *dest, void *src, size_t n); //TODO -int memcmp(const void *s1, const void *s2, size_t n); -void bzero(const void *dest, size_t size); -int ceil(float n1); -#endif diff --git a/src/kernel/include/paging.h b/src/kernel/include/paging.h deleted file mode 100644 index 267da43..0000000 --- a/src/kernel/include/paging.h +++ /dev/null @@ -1,71 +0,0 @@ -#include -//paging errors -#define PAGEMAP_LOCATION 0x4000 -#ifndef _PAGE_H_ -#define _PAGE_H_ -#include - -#define PAGE_VIRT_UNALIGNED 0x01 -#define PAGE_PHYS_UNALIGNED 0x02 -#define PAGE_PHYS_INVALID 0x03 -#define PAGE_VIRT_INVALID 0x04 - -//* -typedef struct __attribute__((packed)) { - unsigned int present : 1; // present, must be one when accessed. - unsigned int read_write : 1; // if set to one, read and write is set - unsigned int user : 1; // another bit we'll never use, for seperating CPL 0-2 and 3+ - unsigned int writethrough_cache : 1; // honestly maybe I should look into caching - unsigned int cachable : 1; // hardware chaching. 0 is enabled, whats the worst that could happen? - unsigned int accessed : 1; // we'll never use any of these! - unsigned int zg0 : 1; // needs to be (and will be) zero'd - unsigned int size : 1; - unsigned int zg1 : 1; // needs to be (and will be) zero'd - unsigned int software_marks : 3; // available for our own use, I doubt we'll use it in such a simple thing - - uintptr_t base_ptr : 40; - unsigned int sign:11; -} page_entry; - - -typedef struct __attribute__((packed)) { - page_entry pml4e[512]; - page_entry pdpe[512]; - page_entry pde[512]; - page_entry pte[512]; -} page_table; - -#define MEM_AVAILABLE 1 -#define MEM_RESERVED 2 -#define MEM_APCI_RECLAIMABLE 3 -#define MEM_APCI_NVS 4 -#define MEM_BAD 5 - -#define PAGE_SIZE_4K 12 -#define PAGE_SIZE_2M 21 -#define PAGE_SIZE_1G 30 - -struct memory_table { - uint64_t base; - uint64_t length; - uint32_t type; - uint32_t ACPI; -} __attribute__((packed)); - -struct phys_map { - uint64_t map_size; //this way we won't have to calculate it every time - void *chunk_start; - uint64_t chunk_size; - uint64_t *buddies; -} __attribute__((packed)); - - -extern void* _meminfo_loc; -extern void* _stage2_pagetable; - -bool map_page(void *virtual_addr, void *physical_addr, uint8_t PAGE_SIZE); -void debug_print_memory(); -void create_pagetable_stage2(uint64_t free_mem); -void init_memory(); -#endif - diff --git a/src/kernel/include/printf.h b/src/kernel/include/printf.h deleted file mode 100644 index 6104ccf..0000000 --- a/src/kernel/include/printf.h +++ /dev/null @@ -1,117 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// \author (c) Marco Paland (info@paland.com) -// 2014-2019, PALANDesign Hannover, Germany -// -// \license The MIT License (MIT) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// -// \brief Tiny printf, sprintf and snprintf implementation, optimized for speed on -// embedded systems with a very limited resources. -// Use this instead of bloated standard/newlib printf. -// These routines are thread safe and reentrant. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _PRINTF_H_ -#define _PRINTF_H_ - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** - * Output a character to a custom device like UART, used by the printf() function - * This function is declared here only. You have to write your custom implementation somewhere - * \param character Character to output - */ -void _putchar(char character); - - -/** - * Tiny printf implementation - * You have to implement _putchar if you use printf() - * To avoid conflicts with the regular printf() API it is overridden by macro defines - * and internal underscore-appended functions like printf_() are used - * \param format A string that specifies the format of the output - * \return The number of characters that are written into the array, not counting the terminating null character - */ -#define printf printf_ -int printf_(const char* format, ...); - - -/** - * Tiny sprintf implementation - * Due to security reasons (buffer overflow) YOU SHOULD CONSIDER USING (V)SNPRINTF INSTEAD! - * \param buffer A pointer to the buffer where to store the formatted string. MUST be big enough to store the output! - * \param format A string that specifies the format of the output - * \return The number of characters that are WRITTEN into the buffer, not counting the terminating null character - */ -#define sprintf sprintf_ -int sprintf_(char* buffer, const char* format, ...); - - -/** - * Tiny snprintf/vsnprintf implementation - * \param buffer A pointer to the buffer where to store the formatted string - * \param count The maximum number of characters to store in the buffer, including a terminating null character - * \param format A string that specifies the format of the output - * \param va A value identifying a variable arguments list - * \return The number of characters that COULD have been written into the buffer, not counting the terminating - * null character. A value equal or larger than count indicates truncation. Only when the returned value - * is non-negative and less than count, the string has been completely written. - */ -#define snprintf snprintf_ -#define vsnprintf vsnprintf_ -int snprintf_(char* buffer, size_t count, const char* format, ...); -int vsnprintf_(char* buffer, size_t count, const char* format, va_list va); - - -/** - * Tiny vprintf implementation - * \param format A string that specifies the format of the output - * \param va A value identifying a variable arguments list - * \return The number of characters that are WRITTEN into the buffer, not counting the terminating null character - */ -#define vprintf vprintf_ -int vprintf_(const char* format, va_list va); - - -/** - * printf with output function - * You may use this as dynamic alternative to printf() with its fixed _putchar() output - * \param out An output function which takes one character and an argument pointer - * \param arg An argument pointer for user data passed to output function - * \param format A string that specifies the format of the output - * \return The number of characters that are sent to the output function, not counting the terminating null character - */ -int fctprintf(void (*out)(char character, void* arg), void* arg, const char* format, ...); - - -#ifdef __cplusplus -} -#endif - - -#endif // _PRINTF_H_ diff --git a/src/kernel/include/serial.h b/src/kernel/include/serial.h deleted file mode 100644 index 824e245..0000000 --- a/src/kernel/include/serial.h +++ /dev/null @@ -1,16 +0,0 @@ -//these com values are just guesses! Figure out how to find em later if you want -#ifndef _SERIAL_H_ -#define _SERIAL_H_ - -#include -#define COM1 0x3f8 -#define COM2 0x2f8 -#define COM3 0x3e8 -#define COM4 0x2e8 - - -int init_serial(uint16_t port); -void serial_out(uint16_t port, char *string); -void _putchar_serial(uint16_t port, char character); - -#endif diff --git a/src/kernel/include/video.h b/src/kernel/include/video.h deleted file mode 100644 index 82d3423..0000000 --- a/src/kernel/include/video.h +++ /dev/null @@ -1,51 +0,0 @@ -#include -void dump_video(); - -//this struct was stolen from wiki.osdev.org -struct mode_info { - uint16_t attributes; - uint8_t window_a; - uint8_t window_b; - uint16_t granularity; - uint16_t window_size; - uint16_t segment_a; - uint16_t segment_b; - uint32_t win_func_ptr; - uint16_t pitch; - uint16_t width; - uint16_t height; - uint8_t w_char; - uint8_t y_char; - uint8_t planes; - uint8_t bpp; - uint8_t banks; - uint8_t memory_model; - uint8_t bank_size; - uint8_t image_pages; - uint8_t reserved0; - uint8_t red_mask; - uint8_t red_position; - uint8_t green_mask; - uint8_t green_position; - uint8_t blue_mask; - uint8_t blue_position; - uint8_t reserved_mask; - uint8_t reserved_position; - uint8_t direct_color_attributes; - - uint32_t framebuffer; - uint32_t off_screen_mem_off; - uint16_t off_screen_mem_size; - uint8_t reserved1[206]; -} __attribute__((packed)); - -struct vbe_infoblock { - char vbe_signature[4]; - uint16_t vbe_version; - uint16_t oem_ptr[2]; - uint8_t capabilities[4]; - uint32_t videomodeptr; - uint16_t total_memory; -} __attribute__((packed)); - -extern void *_vbe_infoblock; -- cgit v1.2.3