Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
fc6ff9f
Misc: Implement something close enough to POSIX signals. Implement fu…
oberrow Sep 2, 2024
4817100
Mm: Optimize swap using dirty page lists + standby lists. Implement m…
oberrow Sep 2, 2024
027f2d4
Mm: Small changes
oberrow Oct 1, 2024
93d2786
IRQ: Fix bug with unzeroed memory.
oberrow Oct 1, 2024
b546226
Misc: Replace all occurences of Allocate with ZeroAllocate.
oberrow Oct 6, 2024
6acc892
Changes to the FAT driver + Misc Changes
oberrow Oct 7, 2024
afd2e9f
Update uACPI.
oberrow Oct 7, 2024
ee5a99c
remove disk.img
oberrow Oct 11, 2024
ca5430b
Implement pipes.
oberrow Oct 12, 2024
a8763cb
We're in user mode now!
oberrow Oct 13, 2024
c6c8009
Add a syscall interface.
oberrow Oct 13, 2024
d9867d3
Add ExitCurrentThread and Yield syscalls
oberrow Oct 13, 2024
cfe7096
Fix bugs related to SIGCONT and SIGSTOP
oberrow Oct 13, 2024
3047d5e
Fix a crash with CoW in a usermode context
oberrow Oct 13, 2024
7882d78
Fix a bug related to syscalls
oberrow Oct 13, 2024
702c50d
Remove Sys_Nop syscall.
oberrow Oct 13, 2024
b4e4bbc
Export syscall tables.
oberrow Oct 14, 2024
fec9084
Add a handle interface.
oberrow Oct 14, 2024
5667028
Implement handle cloning and closing.
oberrow Oct 14, 2024
cb1bd13
Add thread syscalls
oberrow Oct 17, 2024
207dc9b
Add missing sched_sys.* files
oberrow Oct 17, 2024
5d66bb7
Make console logs be colorful
oberrow Oct 17, 2024
853c1f0
Fix possible race condition with handles.
oberrow Oct 18, 2024
b87ddf6
Make pagecache dirty regions use an RB-tree
oberrow Oct 19, 2024
bfdc3d7
Implement VMM syscalls + Forking contexts
oberrow Oct 25, 2024
439d9e3
Extend the driver interface
oberrow Oct 27, 2024
d47affe
Implement suspend (note: incomplete; does not restore some stuff)
oberrow Nov 2, 2024
b26e062
Synchronize MTRR values on APs, and restore them on S3 wake
oberrow Nov 2, 2024
cc7208f
Fix typo
oberrow Nov 2, 2024
4a6e9a9
Move sanitizers to a static library
oberrow Nov 3, 2024
1a07a93
Implement new PCI interface
oberrow Dec 16, 2024
f56aea1
Add missing file to compilation.
oberrow Dec 16, 2024
86f60a0
Remove un needed code
oberrow Dec 16, 2024
25a16c6
Switch from stb_sprintf to nanoprintf
oberrow Dec 16, 2024
43f3360
Implement Futexes
oberrow Dec 17, 2024
3783b02
Make ioctl more posix-like.
oberrow Dec 17, 2024
b8a94d5
Write EC driver (TODO: Test)
oberrow Dec 18, 2024
a5dbfa8
Bump uACPI
oberrow Dec 19, 2024
c5f6307
Change README
oberrow Dec 20, 2024
d15e8c5
Bump uACPI version.
oberrow Dec 20, 2024
1a4b162
Support building with Clang
oberrow Dec 22, 2024
dccbf6b
Fix EC driver bugs, suspend bugs.
oberrow Dec 24, 2024
2e7e038
Fix typo
oberrow Dec 24, 2024
eca1960
Add no-smp command line option.
oberrow Dec 24, 2024
7d1bf1a
Make syscalls run at IRQL_PASSIVE.
oberrow Dec 24, 2024
8ef90f6
Add an (untested) ELF loader.
oberrow Dec 24, 2024
99388ca
Implement interruptable waits.
rayanmargham Dec 25, 2024
b54661d
Fix bugs with interruptible waits
oberrow Dec 25, 2024
27e547a
Implement Mm_MapViewOfUserMemory, fix bugs with shared memory
oberrow Dec 25, 2024
e7bc9ce
Fix bugs related to compiling OBOS in Debug mode+UBSAN
oberrow Dec 26, 2024
b17617e
Finish VFS syscalls (untested)
oberrow Dec 26, 2024
872760a
Implement partition syscalls.
oberrow Dec 26, 2024
0324bfb
Implement driver interface syscalls.
oberrow Dec 26, 2024
73ce183
Implement signal syscalls.
oberrow Dec 26, 2024
d7640bd
Implement dirent syscalls.
oberrow Dec 26, 2024
d8c1567
Implement execve (untested)
oberrow Dec 27, 2024
d1d6848
Update uACPI.
oberrow Dec 27, 2024
0f66ebb
Add init program + fix bugs in execve
oberrow Dec 28, 2024
93dd04e
ec: dont break if uacpi reached an error getting the resource
rayanmargham Dec 29, 2024
3a537f8
ec: dont break if uacpi reached an error getting the resource (#28)
oberrow Dec 29, 2024
c546234
Fix many bugs, rewrite the allocator.
oberrow Dec 29, 2024
b83c32f
Miscellaneous optimizations
oberrow Dec 29, 2024
bcb157e
Fix bugs, add SSE support
oberrow Dec 30, 2024
835fe39
Bug fixes
oberrow Dec 31, 2024
b888f9c
Remove argument passed to init.
oberrow Dec 31, 2024
539dfbf
Uncomment SIGSEGV code in Arch_SegvHandler
oberrow Dec 31, 2024
f28d4fd
Merge branch 'master' into userspace-work
oberrow Dec 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 104 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,58 @@
#
# Copyright (c) 2024 Omar Berrow

if (NOT DEFINED OUTPUT_DIR)
set (OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out)
endif()
cmake_minimum_required(VERSION 3.10)

# Boolean options.

option (OBOS_UP "Make a Uniprocessor-Build of obos.")
option (OBOS_ENABLE_UBSAN "Enables UBSan.")
option (OBOS_ENABLE_KASAN "Enables KAsan.")
option (OBOS_ENABLE_FANALYZER "(Developers only) Enables the compiler's static analyzer")
option (OBOS_ENABLE_WERROR "(Developers only) Enables the -Werror option")
option (OBOS_USE_CLANG "Use clang instead of GCC to build.")
option (OBOS_NVS_SAVE_S3 "Enable compile-time support for saving NVS before S3" ON)
option (OBOS_ENABLE_LOCK_PROFILING "(Experimental) Enable profiling for locks.")
option (OBOS_ENABLE_PROFILER "(Experimental) Enable profiling.")
option (OBOS_LAZY_IRQL "Enables lazy IRQL. Recommended if the main target of the kernel is hypervisors, where writing to cr8 is slooow.")

# String options

# NOTE: Unless we add FORCE to the end, CMake shouldn't override user values.
set (OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out CACHE STRING "The output directory.")
set (OBOS_PAGE_REPLACEMENT_ALGORITHM "Aging" CACHE STRING "(Kernel developers only) The page replacement algorithm used by the MM.")
set (OBOS_DEV_PREFIX "/dev" CACHE STRING "Directory where the kernel places devices.")
set (OBOS_CLANG_SUFFIX "" CACHE STRING "Some Linux distributions add a suffix to various clang and LLVM commands, such as the version used. Specify that suffix, if needed")

file (TO_CMAKE_PATH "${OUTPUT_DIR}" OUTPUT_DIR)
file (TO_NATIVE_PATH "${OUTPUT_DIR}" OUTPUT_DIR)

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR})

cmake_minimum_required(VERSION 3.7)
project(
OBOS
LANGUAGES C CXX ASM
DESCRIPTION "Hybrid Kernel with advanced driver loading."
HOMEPAGE_URL https://github.com/OBOS-dev/obos
)

project(OBOS C CXX ASM)
if (OBOS_ARCHITECTURE STREQUAL "x86_64")
enable_language(ASM_NASM)
else()
enable_language(ASM-ATT)
endif()

if (OBOS_USE_CLANG)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-Wno-error=unknown-pragmas>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unknown-pragmas>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-error=unknown-attributes>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-error=c23-extensions>)
if (OBOS_ENABLE_KASAN)
set (OBOS_ENABLE_KASAN OFF)
message (WARNING "OBOS does not support Clang's ASAN implementation. If you really care about this, make a PR, as I don't.")
endif()
endif()

# Download dependencies.
# NOTE: As dependencies are added, please add them to the .gitignore file.
# If a dependency cmake file is included, and OBOS_REFRESH_DEPENDENCIES is false, the cmake file shall not download or make any file operations, and only set any cache variables related
Expand Down Expand Up @@ -50,14 +84,44 @@ else()
endif()
endif()

if (DEFINED OBOS_UP)
if (OBOS_UP)
add_compile_definitions(OBOS_UP=1)
endif()

if (OBOS_NVS_SAVE_S3)
set (OBOS_NVS_SAVE_S3 "1")
else()
set (OBOS_NVS_SAVE_S3 "0")
endif()
add_compile_definitions(OBOS_NVS_SAVE_S3=${OBOS_NVS_SAVE_S3})

if (OBOS_LAZY_IRQL)
set (OBOS_LAZY_IRQL "1")
else()
set (OBOS_LAZY_IRQL "0")
endif()
add_compile_definitions(OBOS_LAZY_IRQL=${OBOS_LAZY_IRQL})

if (OBOS_ENABLE_LOCK_PROFILING)
set (OBOS_ENABLE_LOCK_PROFILING "1")
else()
set (OBOS_ENABLE_LOCK_PROFILING "0")
endif()
add_compile_definitions(OBOS_ENABLE_LOCK_PROFILING=${OBOS_ENABLE_LOCK_PROFILING})

if (OBOS_ENABLE_PROFILER)
set (OBOS_ENABLE_PROFILER "1")
else()
set (OBOS_ENABLE_PROFILER "0")
endif()
add_compile_definitions(OBOS_ENABLE_PROFILING=${OBOS_ENABLE_PROFILER})

add_compile_definitions(OBOS_BINARY_DIRECTORY="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")

add_compile_definitions(OBOS_ARCHITECTURE_BITS=${OBOS_ARCHITECTURE_BITS})

#add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-fno-strict-aliasing>)

execute_process(COMMAND
"${GIT_EXECUTABLE}" describe --match=NeVeRmAtCh --always --abbrev=40 --dirty
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
Expand All @@ -74,24 +138,25 @@ execute_process(COMMAND
add_compile_definitions (GIT_SHA1="${GIT_SHA1}" GIT_DATE="${GIT_DATE}")
add_compile_definitions (OBOS_ARCHITECTURE_ENDIANNESS="${OBOS_ARCHITECTURE_ENDIANNESS}")

if (DEFINED OBOS_ENABLE_UBSAN)
list (APPEND oboskrnl_sources "sanitizers/ubsan.c")
#list (APPEND oboskrnl_sources "sanitizers/ubsan.c")
if (OBOS_ENABLE_UBSAN)
add_compile_options(
$<$<COMPILE_LANGUAGE:C>:-fsanitize=undefined>
)
set(OBOS_ENABLE_UBSAN "1")
set (OBOS_ENABLE_UBSAN "1")
else()
set(OBOS_ENABLE_UBSAN "0")
set (OBOS_ENABLE_UBSAN "0")
endif()
add_compile_definitions(OBOS_UBSAN_ENABLED=${OBOS_ENABLE_UBSAN})
if (DEFINED OBOS_ENABLE_KASAN)
list (APPEND oboskrnl_sources "sanitizers/asan.c")

#list (APPEND oboskrnl_sources "sanitizers/asan.c")
if (OBOS_ENABLE_KASAN)
add_compile_options(
$<$<COMPILE_LANGUAGE:C>:-fsanitize=kernel-address>
)
set(OBOS_ENABLE_KASAN "1")
set (OBOS_ENABLE_KASAN "1")
else()
set(OBOS_ENABLE_KASAN "0")
set (OBOS_ENABLE_KASAN "0")
endif()
add_compile_definitions(OBOS_KASAN_ENABLED=${OBOS_ENABLE_KASAN})
add_compile_definitions(OBOS_IRQL_COUNT=${OBOS_IRQL_COUNT})
Expand All @@ -103,23 +168,32 @@ add_compile_definitions(
$<$<CONFIG:MinSizeRel>:OBOS_RELEASE>
)

string(TOUPPER "${OBOS_PAGE_REPLACEMENT_ALGORITHM}" OBOS_PAGE_REPLACEMENT_ALGORITHM)
set(OBOS_PAGE_REPLACEMENT_ALGORITHM_DEFINE "OBOS_PAGE_REPLACEMENT_")
string(APPEND OBOS_PAGE_REPLACEMENT_ALGORITHM_DEFINE "${OBOS_PAGE_REPLACEMENT_ALGORITHM}")
add_compile_definitions(${OBOS_PAGE_REPLACEMENT_ALGORITHM_DEFINE}=1)
string(APPEND OBOS_PAGE_REPLACEMENT_ALGORITHM "\"")
string(PREPEND OBOS_PAGE_REPLACEMENT_ALGORITHM "\"")
add_compile_definitions(OBOS_PAGE_REPLACEMENT_ALGORITHM=${OBOS_PAGE_REPLACEMENT_ALGORITHM})

set_property(GLOBAL PROPERTY C_STANDARD 17
PROPERTY C_STANDARD_REQUIRED true
PROPERTY C_EXTENSIONS On)

if (DEFINED OBOS_ENABLE_WERROR AND NOT DEFINED OBOS_ENABLE_FANALYZER)
add_compile_options("-Werror")
if (OBOS_ENABLE_WERROR AND NOT OBOS_ENABLE_FANALYZER)
add_compile_options("-Werror" $<$<COMPILE_LANGUAGE:C>:-Wno-error=unused-function> $<$<COMPILE_LANGUAGE:C>:-Wno-error=unused-parameter>)
endif()
if (DEFINED OBOS_ENABLE_FANALYZER)
if (OBOS_ENABLE_FANALYZER)
add_compile_options($<$<COMPILE_LANGUAGE:C>:-fanalyzer>)
endif()
if (DEFINED OBOS_ENABLE_FANALYZER AND DEFINED OBOS_ENABLE_WERROR)
if (OBOS_ENABLE_FANALYZER AND OBOS_ENABLE_WERROR)
message(WARNING "OBOS_ENABLE_FANALYZER and OBOS_ENABLE_WERROR are mutually exclusive. Preferring OBOS_ENABLE_FANALYZER.")
endif()

if (NOT DEFINED OBOS_DEV_PREFIX)
set(OBOS_DEV_PREFIX "/dev/")
endif()
# Now done somewhere else.
# if (NOT DEFINED OBOS_DEV_PREFIX)
# set(OBOS_DEV_PREFIX "/dev/")
# endif()
configure_file(${CMAKE_SOURCE_DIR}/src/inc/dev_prefix.h.in ${CMAKE_SOURCE_DIR}/src/oboskrnl/inc/dev_prefix.h @ONLY)

add_compile_definitions(
Expand All @@ -129,18 +203,21 @@ add_compile_definitions(

# Include the kernel
add_subdirectory("src/oboskrnl")
if (OBOS_ARCHITECTURE STREQUAL "m68k")
add_subdirectory("src/oboskrnl/arch/m68k/loader")
endif()
add_subdirectory("src/uACPI")
add_subdirectory("src/sanitizers")
# Include drivers
get_target_property(uacpi_INCLUDES uacpi INCLUDE_DIRECTORIES)
include_directories(${uacpi_INCLUDES})
if (OBOS_ARCHITECTURE STREQUAL "x86_64")
add_subdirectory("src/drivers/x86_64/uart")
endif()
add_subdirectory("src/drivers/x86/bochs_vbe")
add_subdirectory("src/drivers/x86/uart")
endif()
add_subdirectory("src/drivers/generic/initrd")
add_subdirectory("src/drivers/generic/ahci")
add_subdirectory("src/drivers/generic/slowfat")
add_subdirectory("src/drivers/test_driver")
add_subdirectory("src/drivers/generic/ahci")
add_subdirectory("src/init")
add_subdirectory("src/isogen")
if (OBOS_ARCHITECTURE STREQUAL "m68k")
add_subdirectory("src/oboskrnl/arch/m68k/loader")
endif()
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# OBOS
OBOS uses ***✨ state of the art technology ✨*** to do ***✨ absolutely nothing ✨***
OBOS uses ***✨ state of the art technology ✨*** to do ***✨ almost nothing ✨***
## Building
### Prerequisites
- NASM
Expand Down
8 changes: 2 additions & 6 deletions config/hyper.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ protocol=ultra
higher-half-exclusive=true
kernel-as-module=true
video-mode=auto
cmdline='-initrd-module=initrd -initrd-driver-module=initrd_driver --root-fs-partid initrd --working-set-cap=8388608 --load-modules=/slowfat'
cmdline='-initrd-module=initrd -initrd-driver-module=initrd_driver --root-fs-partid initrd --working-set-cap=8388608 --load-modules=/slowfat --initial-swap-size=67108864 --log-level=1 --no-smp --init-path=/bash'

binary:
path="/obos/oboskrnl"
Expand All @@ -16,15 +16,11 @@ page-table:
constraint=exactly
null-guard=true

module:
type="memory"
size=67108864
name="INITIAL_SWAP_BUFFER"
module:
type="file"
path="/obos/initrd.tar"
name="initrd"
module:
type="file"
path="/obos/initrd"
name="initrd_driver"
name="initrd_driver"
Binary file removed config/initrd.tar
Binary file not shown.
3 changes: 0 additions & 3 deletions dependencies/needs_download.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion dependencies/uacpi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if (OBOS_REFRESH_DEPENDENCIES)

FetchContent_Declare(uACPI
GIT_REPOSITORY https://github.com/UltraOS/uACPI.git
GIT_TAG eda7c1b24e7b320d72313063d60bee2b3ef88510
GIT_TAG c0a82c02d90269625f9ba383aab9720163c1fa90
SOURCE_DIR ${CMAKE_SOURCE_DIR}/dependencies/uACPI
)
FetchContent_MakeAvailable(uACPI)
Expand Down
Binary file removed disk.img
Binary file not shown.
Binary file added screenshots/20241017_1948.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/20241230_1558.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions scripts/find_addr.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
clear

cd ..
export address=$1
export exe=$2
Expand Down
2 changes: 0 additions & 2 deletions scripts/find_addr_m68k.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
clear

cd ..
export address=$1
export exe=$2
Expand Down
5 changes: 4 additions & 1 deletion scripts/generate_initrd-x86_64.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ then
mkdir tar
fi
cp out/uart tar
cp out/ahci tar
# cp out/ahci tar
rm tar/ahci
cp out/slowfat tar
cp out/bochs_vbe tar
#cp out/init tar
if [[ ! -d tar/dev ]]
then
mkdir tar/dev
Expand Down
11 changes: 6 additions & 5 deletions scripts/launch_qemu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@ cd ../

rm qemu_log.txt

echo $@
qemu-system-x86_64 \
-drive id=disk2,file=out/obos.iso,if=none,format=raw \
-device ahci,id=ahci \
-device ide-hd,drive=disk2,bus=ahci.0,bootindex=1 \
-drive file=disk.img,format=raw \
-m 1G \
-drive file=out/obos.iso,format=raw \
-m 256M \
-gdb tcp:0.0.0.0:1234 -S \
-boot d \
-M q35 \
-cpu host \
-accel kvm \
-debugcon file:/dev/stdout \
-monitor stdio \
-smp cores=1,threads=1,sockets=1 \
-serial tcp:0.0.0.0:1534,server,nowait \
-d int \
-D qemu_log.txt "$@"
-smp cores=$(nproc),threads=1,sockets=1 \
-M smm=off \
-D qemu_log.txt
Expand Down
9 changes: 9 additions & 0 deletions scripts/make_bp.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh
out="for (volatile bool b = ($1); b; );"
which -s xsel
if [ $? -eq 0 ]
then
echo $out | xsel -ibo
else
echo $out
fi
12 changes: 8 additions & 4 deletions src/build/m68k/toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ if (NOT HAS_CROSS_COMPILER)
message(FATAL_ERROR "No m68k-obos cross compiler in the PATH!")
endif()

if (OBOS_USE_CLANG)
message(WARNING "OBOS does not support m68k clang")
endif()

set(CMAKE_C_COMPILER "m68k-obos-gcc")
set(CMAKE_CXX_COMPILER "m68k-obos-g++")
set(CMAKE_ASM-ATT_COMPILER ${CMAKE_C_COMPILER})
Expand Down Expand Up @@ -45,10 +49,10 @@ endif()
add_compile_options("-mcpu=68040")

list (APPEND oboskrnl_sources
"arch/m68k/entry.c" "arch/m68k/memmanip.c" "arch/m68k/asm_helpers.S" "arch/m68k/irql.c"
"arch/m68k/entry.c" "arch/m68k/asm_helpers.S" "arch/m68k/irql.c" "arch/m68k/driver_loader.c"
"arch/m68k/irq.c" "arch/m68k/isr.S" "arch/m68k/thread_ctx.S" "arch/m68k/thread_ctx.c"
"arch/m68k/mmu.c" "arch/m68k/pmm.c" "arch/m68k/exception_handlers.c" "arch/m68k/initial_swap.c"
"arch/m68k/goldfish_pic.c" "arch/m68k/goldfish_rtc.c" "arch/m68k/driver_loader.c"
"arch/m68k/mmu.c" "arch/m68k/pmm.c" "arch/m68k/exception_handlers.c" "arch/m68k/goldfish_rtc.c"
"arch/m68k/goldfish_pic.c"
)

add_compile_definitions(
Expand All @@ -71,4 +75,4 @@ set (DRIVER_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/src/build/m68k/driver_link.ld")
set (OBOS_ARCHITECTURE_HAS_ACPI 0)
set (OBOS_ARCHITECTURE_HAS_PCI 0)
set (OBOS_IRQL_COUNT 8)
set (OBOS_UP 1) # The m68k doesn't support SMP, so we disable it as a [POSSIBLE] optimization
set (OBOS_UP 1) # The m68k doesn't support SMP, so we disable it as a [POSSIBLE] optimization
5 changes: 4 additions & 1 deletion src/build/x86_64/driver_link.ld
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ PHDRS
dynamic PT_DYNAMIC;
}


SECTIONS
{
Drv_Base = .;
Expand All @@ -37,6 +38,7 @@ SECTIONS

.data : {
*(.data .data.*)
*(.driverheader)
} :data

.bss : {
Expand Down Expand Up @@ -79,4 +81,5 @@ SECTIONS
*(.dynamic)
} :data :dynamic

}
Drv_Top = .;
}
Loading