summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-12-01 14:07:50 +0100
committerMichal Idziorek <m.i@gmx.at>2014-12-01 14:07:50 +0100
commit100be313c22bd6116b1adc5eb30f5db56f4b0772 (patch)
treed45a3e7d44b483b87dfce99bbf56b900f8974222
parent0ec5b4d78c0fa1e256577f22e4265fd8a9e12197 (diff)
fuck reentrant clib, we are linking static anyway
-rw-r--r--README.md1
-rw-r--r--asm/int_clock_handler.asm2
-rw-r--r--asm/int_kb_handler.asm1
-rw-r--r--kernel/vmem.c5
-rw-r--r--userspace/task1.c7
-rw-r--r--userspace/task2.c5
6 files changed, 14 insertions, 7 deletions
diff --git a/README.md b/README.md
index 14e87c6..b73eb87 100644
--- a/README.md
+++ b/README.md
@@ -81,7 +81,6 @@ Todos
-----
* Allow GRUB as alternative bootloader (multiboot spec/ grub-mkrescue)
-* Begin to worry about reentrancy of clib!
* Support some TTY standard
* Real User space
* /dev/console
diff --git a/asm/int_clock_handler.asm b/asm/int_clock_handler.asm
index bcd45da..627e432 100644
--- a/asm/int_clock_handler.asm
+++ b/asm/int_clock_handler.asm
@@ -20,7 +20,7 @@ int_clock_handler:
pusha ;Push all standard registers
mov eax, esp
- mov esp,0x1000
+ mov esp,0x1000 ;put the stack outside of virtual memory in kernel space!
push eax ;Push pointer to all the stuff we just pushed
call task_switch_next ;Call C code
diff --git a/asm/int_kb_handler.asm b/asm/int_kb_handler.asm
index f2e33bf..acf6208 100644
--- a/asm/int_kb_handler.asm
+++ b/asm/int_kb_handler.asm
@@ -5,6 +5,7 @@ global int_kb_handler
[bits 32]
int_kb_handler:
+
cli
pusha
diff --git a/kernel/vmem.c b/kernel/vmem.c
index 3079733..53e33c4 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -339,11 +339,11 @@ int vmem_new_space_dir()
void vmem_set_dir(int dir)
{
- x86_paging_disable();
+// x86_paging_disable();
x86_set_pdbr(page_dirs[dir]);
// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"set pagedir to %d (0x%08X)",dir,page_dirs[dir]);
current_dir=dir;
- x86_paging_enable();
+// x86_paging_enable();
}
@@ -353,6 +353,7 @@ void vmem_init()
//log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init paging (vesa base: 0x%08x)",vesa_physbase);
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init paging");
vmem_set_dir(vmem_new_space_dir());
+ x86_paging_enable();
}
diff --git a/userspace/task1.c b/userspace/task1.c
index ed686c4..d3706ee 100644
--- a/userspace/task1.c
+++ b/userspace/task1.c
@@ -1,8 +1,11 @@
-int main(int argc, char **argv)
+int main(int argc, char **argv)
{
+ signed int i=0;
+
while(1)
{
- write(1,"task 1 \n",8);
+ i++;
+ printf("task 1 : %i \n",i);
}
return 0;
diff --git a/userspace/task2.c b/userspace/task2.c
index f1164d7..e529921 100644
--- a/userspace/task2.c
+++ b/userspace/task2.c
@@ -1,8 +1,11 @@
int main(int argc, char **argv)
{
+ signed int i=0;
+
while(1)
{
- write(1,"task 2 \n",8);
+ i++;
+ printf("task 2 : %i \n",i);
}
return 0;