From db192f6d368c9a52f39ba970e5b8e86bae790388 Mon Sep 17 00:00:00 2001 From: josh Date: Wed, 1 Jul 2009 19:52:18 +0000 Subject: [PATCH] added CXXFLAGS to disable rtti and exceptions; added C++ support to header files; moved mm.c to mm.cc to use C++ functionality git-svn-id: svn://anubis/hos/trunk@32 5b3e749e-e535-0410-8002-a9bb6afbdfca --- kernel/Makefile | 2 +- kernel/boot/k_early_panic.h | 8 ++++++++ kernel/include/hos_defines.h | 8 ++++++++ kernel/include/hos_types.h | 8 ++++++++ kernel/include/multiboot.h | 8 ++++++++ kernel/mm/{mm.c => mm.cc} | 11 ++++++++--- kernel/mm/mm.h | 8 ++++++++ 7 files changed, 49 insertions(+), 4 deletions(-) rename kernel/mm/{mm.c => mm.cc} (84%) diff --git a/kernel/Makefile b/kernel/Makefile index 8b48dd7..7256072 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -10,7 +10,7 @@ LDSCRIPT := link.ld KERNEL := hos export CPPFLAGS := -I$(HOS_TOPLEVEL) -I$(HOS_TOPLEVEL)/include export CFLAGS := -Wall -O2 -export CXXFLAGS := -Wall -O2 +export CXXFLAGS := -Wall -O2 -fno-rtti -fno-exceptions export LDFLAGS := -T $(LDSCRIPT) -Map $(KERNEL).map SUBDIRS := boot mm diff --git a/kernel/boot/k_early_panic.h b/kernel/boot/k_early_panic.h index 9da109d..4963af0 100644 --- a/kernel/boot/k_early_panic.h +++ b/kernel/boot/k_early_panic.h @@ -2,6 +2,14 @@ #ifndef K_EARLY_PANIC_H #define K_EARLY_PANIC_H +#ifdef __cplusplus +extern "C" { +#endif + void k_early_panic(const char * msg); +#ifdef __cplusplus +} +#endif + #endif diff --git a/kernel/include/hos_defines.h b/kernel/include/hos_defines.h index 5a3a23f..5783776 100644 --- a/kernel/include/hos_defines.h +++ b/kernel/include/hos_defines.h @@ -2,6 +2,10 @@ #ifndef HOS_DEFINES_H #define HOS_DEFINES_H +#ifdef __cplusplus +extern "C" { +#endif + #define HOS_KERNEL_OFFSET 0xE0000000 #define PAGE_LOG_SIZE 12 @@ -20,4 +24,8 @@ extern u8_t _end; #define KERNEL_VIRTUAL_ADDRESS (&_code) #define KERNEL_SIZE ((&_end) - (&_code)) +#ifdef __cplusplus +} +#endif + #endif diff --git a/kernel/include/hos_types.h b/kernel/include/hos_types.h index eead480..3d7a882 100644 --- a/kernel/include/hos_types.h +++ b/kernel/include/hos_types.h @@ -2,6 +2,10 @@ #ifndef HOS_TYPES_H #define HOS_TYPES_H +#ifdef __cplusplus +extern "C" { +#endif + typedef unsigned char u8_t; typedef signed char s8_t; typedef unsigned short u16_t; @@ -11,4 +15,8 @@ typedef signed int s32_t; typedef unsigned long long u64_t; typedef signed long long s64_t; +#ifdef __cplusplus +} +#endif + #endif diff --git a/kernel/include/multiboot.h b/kernel/include/multiboot.h index 2f0145d..3a1a40c 100644 --- a/kernel/include/multiboot.h +++ b/kernel/include/multiboot.h @@ -4,6 +4,10 @@ #include "hos_types.h" +#ifdef __cplusplus +extern "C" { +#endif + /* The magic number for the Multiboot header. */ #define MB_HEADER_MAGIC 0x1BADB002 @@ -142,4 +146,8 @@ typedef struct u16_t dseg_len; } mb_apm_t; +#ifdef __cplusplus +} +#endif + #endif diff --git a/kernel/mm/mm.c b/kernel/mm/mm.cc similarity index 84% rename from kernel/mm/mm.c rename to kernel/mm/mm.cc index 2b4e339..a61ab59 100644 --- a/kernel/mm/mm.c +++ b/kernel/mm/mm.cc @@ -4,6 +4,8 @@ #define MM_MAX_MMAP_ENTRIES 64 +extern "C" { + pagedirectory_t page_directory __attribute__ ((aligned (4096))); static mm_mem_range_t mm_mmap_entries[MM_MAX_MMAP_ENTRIES]; @@ -41,14 +43,17 @@ void mm_bootstrap() k_early_panic("No mmap entries read from bootloader!"); } - int mmap_idx, i; - for (mmap_idx = 0; mmap_idx < mm_mmap_num_entries; mmap_idx++) + for (int mmap_idx = 0; mmap_idx < mm_mmap_num_entries; mmap_idx++) { } /* Clear the page directory */ - for (i = 0; i < sizeof(page_directory) / sizeof(page_directory[0]); i++) + for (unsigned int i = 0; + i < sizeof(page_directory) / sizeof(page_directory[0]); + i++) { page_directory[i] = 0; } } + +} /* extern "C" */ diff --git a/kernel/mm/mm.h b/kernel/mm/mm.h index 5d9cd9f..068ebec 100644 --- a/kernel/mm/mm.h +++ b/kernel/mm/mm.h @@ -6,6 +6,10 @@ #include "hos_defines.h" #include "multiboot.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef u32_t pagedirectory_entry_t; typedef pagedirectory_entry_t @@ -22,5 +26,9 @@ typedef struct void mm_record_mmap_entry(mb_mmap_t * mmap); void mm_bootstrap(); +#ifdef __cplusplus +} +#endif + #endif