]> git.corax.cc Git - corax/commitdiff
Move definition of struct stack_frame to arch.h
authorMatthias Kruk <m@m10k.eu>
Mon, 4 Nov 2019 01:46:32 +0000 (10:46 +0900)
committerMatthias Kruk <m@m10k.eu>
Mon, 4 Nov 2019 01:46:32 +0000 (10:46 +0900)
kernel/arch/cpu.h
kernel/arch/interrupt.c
kernel/include/arch.h

index f5b134962e38e7c176c0de8eb7ebf3bd51d0777f..da1062add15b68ab8c07d7bbee7da48485dcbd94 100644 (file)
@@ -111,28 +111,6 @@ struct tss64 {
     u16_t   rss64_iomap;
 } __attribute__((packed));
 
-typedef struct stack_frame stack_frame_t;
-
-struct stack_frame {
-       u32_t cr3;
-       u32_t ds;
-       u32_t edi;
-       u32_t esi;
-       u32_t ebp;
-       u32_t esp;
-       u32_t ebx;
-       u32_t edx;
-       u32_t ecx;
-       u32_t eax;
-       u32_t intn;
-       u32_t error;
-       u32_t eip;
-       u32_t cs;
-       u32_t eflags;
-       u32_t prevesp;
-       u32_t ss;
-} __attribute__((packed));
-
 struct cpu {
     segment_descriptor_t    cpu_gdt[GDT_ENTRIES];
     segment_descriptor_t    cpu_idt[IDT_ENTRIES];
index 346e404d0b58b57a1e50aa22ebf80e09455dd1a4..c6af750fdfe5ea8ccd03f55434fbeedcb4725bf4 100644 (file)
@@ -19,6 +19,7 @@
 #include <config.h>
 #include <corax/types.h>
 #include <corax/errno.h>
+#include <arch.h>
 #include <debug.h>
 #include <process.h>
 #include "cpu.h"
index 2d97c34aac70fdb768d1e44c962f81454380b39a..9722a9ab4cd31ead9bf97849a1e1b6fb0de7ff61 100644 (file)
 #ifndef __ARCH_H
 #define __ARCH_H
 
-#include <corax/types.h>
-
 #define TASK_STATE_NEW     0
 #define TASK_STATE_RUNNING 1
 #define TASK_STATE_READY   2
 #define TASK_STATE_WAITING 3
 #define TASK_STATE_BROKEN  4
 #define TASK_STATE_EXIT    5
+#define TASK_STATE_FORKED  6
+
+#ifndef __ASSEMBLY_SOURCE
+
+#include <corax/types.h>
+
+typedef struct stack_frame stack_frame_t;
+
+struct stack_frame {
+       u32_t cr3;
+       u32_t ds;
+       u32_t edi;
+       u32_t esi;
+       u32_t ebp;
+       u32_t esp;
+       u32_t ebx;
+       u32_t edx;
+       u32_t ecx;
+       u32_t eax;
+       u32_t intn;
+       u32_t error;
+       u32_t eip;
+       u32_t cs;
+       u32_t eflags;
+       u32_t prevesp;
+       u32_t ss;
+} __attribute__((packed));
 
 typedef struct task task_t;
 
@@ -52,6 +77,7 @@ u64_t   cpu_timestamp(void);
 u32_t   cpu_set_pstate(int pstate);
 
 int     task_prepare(struct task*, u32_t cr3, u32_t eip, u32_t esp0, u32_t esp, u32_t priv);
+int     task_prepare_fork(struct task*);
 int     task_switch(struct task*);
 
 task_t* task_get_current(void);
@@ -96,4 +122,6 @@ void*   pg_dir_get_ustack(pg_dir_t*);
 
 int     pg_dir_memcpy(pg_dir_t*, void*, pg_dir_t*, void*, u32_t);
 
+#endif /* !__ASSEMBLY_SOURCE */
+
 #endif /* __ARCH_H */