...
This commit is contained in:
6
makefile
6
makefile
@@ -17,13 +17,13 @@ iso: .build/nub-os.iso
|
|||||||
clean:
|
clean:
|
||||||
@rm -r .build 2>/dev/null || true
|
@rm -r .build 2>/dev/null || true
|
||||||
|
|
||||||
.build/nub-os.iso: .build/kernel grub.cfg
|
.build/nub-os.iso: .build/kernel/kernel grub.cfg
|
||||||
mkdir -p .build/nub-os/boot/grub
|
mkdir -p .build/nub-os/boot/grub
|
||||||
cp grub.cfg .build/nub-os/boot/grub
|
cp grub.cfg .build/nub-os/boot/grub
|
||||||
cp .build/kernel .build/nub-os/boot/
|
cp .build/kernel/kernel .build/nub-os/boot/
|
||||||
grub-mkrescue -o .build/nub-os.iso .build/nub-os/
|
grub-mkrescue -o .build/nub-os.iso .build/nub-os/
|
||||||
|
|
||||||
.build/kernel: $(OBJS)
|
.build/kernel/kernel: $(OBJS)
|
||||||
$(LD) $(LDFLAGS) -T linker.ld -o $@ $^
|
$(LD) $(LDFLAGS) -T linker.ld -o $@ $^
|
||||||
|
|
||||||
.build/%.o: src/%.c
|
.build/%.o: src/%.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "../../kernel.h"
|
#include "../../kernel/kernel.h"
|
||||||
#include "../arch.h"
|
#include "../arch.h"
|
||||||
#include "interrupts/idt.h"
|
#include "interrupts/idt.h"
|
||||||
#include "interrupts/irq.h"
|
#include "interrupts/irq.h"
|
||||||
|
|||||||
@@ -5,5 +5,8 @@
|
|||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
pmm_init();
|
pmm_init();
|
||||||
|
|
||||||
|
uint64_t page = pmm_alloc_page();
|
||||||
|
printf("page: %u\n", page);
|
||||||
printf("Welcome to nub OS :)\n");
|
printf("Welcome to nub OS :)\n");
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "pmm.h"
|
#include "pmm.h"
|
||||||
#include "arch/arch.h"
|
#include "../arch/arch.h"
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -52,6 +52,7 @@ void pmm_init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the address of first free physical page
|
||||||
uint64_t pmm_alloc_page()
|
uint64_t pmm_alloc_page()
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < BITMAP_SIZE; i++)
|
for (size_t i = 0; i < BITMAP_SIZE; i++)
|
||||||
@@ -73,6 +74,7 @@ uint64_t pmm_alloc_page()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Frees the physical page at the specified address
|
||||||
void pmm_free_page(uint64_t addr)
|
void pmm_free_page(uint64_t addr)
|
||||||
{
|
{
|
||||||
uint64_t page = addr / PAGE_SIZE;
|
uint64_t page = addr / PAGE_SIZE;
|
||||||
Reference in New Issue
Block a user