Il 15/09/2013 07:08, Kevin O'Connor ha scritto:
Signed-off-by: Kevin O'Connor kevin@koconnor.net
src/stacks.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/stacks.h
diff --git a/src/stacks.h b/src/stacks.h new file mode 100644 index 0000000..5ee4adc --- /dev/null +++ b/src/stacks.h @@ -0,0 +1,34 @@ +// Misc function and variable declarations. +#ifndef __STACKS_H +#define __STACKS_H
+#include "types.h" // u32
+// stacks.c +extern u8 ExtraStack[], *StackPos; +u32 stack_hop(u32 eax, u32 edx, void *func); +u32 stack_hop_back(u32 eax, u32 edx, void *func); +u32 call32(void *func, u32 eax, u32 errret); +struct bregs; +inline void farcall16(struct bregs *callregs); +inline void farcall16big(struct bregs *callregs); +inline void __call16_int(struct bregs *callregs, u16 offset); +#define call16_int(nr, callregs) do { \
extern void irq_trampoline_ ##nr (); \
__call16_int((callregs), (u32)&irq_trampoline_ ##nr ); \
- } while (0)
+extern struct thread_info MainThread; +struct thread_info *getCurThread(void); +void yield(void); +void yield_toirq(void); +void run_thread(void (*func)(void*), void *data); +void wait_threads(void); +struct mutex_s { u32 isLocked; }; +void mutex_lock(struct mutex_s *mutex); +void mutex_unlock(struct mutex_s *mutex); +void start_preempt(void); +void finish_preempt(void); +int wait_preempt(void); +void check_preempt(void);
+#endif // stacks.h
Should be squashed in previous patch.
Paolo
On Mon, Sep 16, 2013 at 11:10:42AM +0200, Paolo Bonzini wrote:
Il 15/09/2013 07:08, Kevin O'Connor ha scritto:
Signed-off-by: Kevin O'Connor kevin@koconnor.net
src/stacks.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/stacks.h
diff --git a/src/stacks.h b/src/stacks.h new file mode 100644 index 0000000..5ee4adc --- /dev/null +++ b/src/stacks.h @@ -0,0 +1,34 @@ +// Misc function and variable declarations. +#ifndef __STACKS_H +#define __STACKS_H
+#include "types.h" // u32
+// stacks.c +extern u8 ExtraStack[], *StackPos; +u32 stack_hop(u32 eax, u32 edx, void *func); +u32 stack_hop_back(u32 eax, u32 edx, void *func); +u32 call32(void *func, u32 eax, u32 errret); +struct bregs; +inline void farcall16(struct bregs *callregs); +inline void farcall16big(struct bregs *callregs); +inline void __call16_int(struct bregs *callregs, u16 offset); +#define call16_int(nr, callregs) do { \
extern void irq_trampoline_ ##nr (); \
__call16_int((callregs), (u32)&irq_trampoline_ ##nr ); \
- } while (0)
+extern struct thread_info MainThread; +struct thread_info *getCurThread(void); +void yield(void); +void yield_toirq(void); +void run_thread(void (*func)(void*), void *data); +void wait_threads(void); +struct mutex_s { u32 isLocked; }; +void mutex_lock(struct mutex_s *mutex); +void mutex_unlock(struct mutex_s *mutex); +void start_preempt(void); +void finish_preempt(void); +int wait_preempt(void); +void check_preempt(void);
+#endif // stacks.h
Should be squashed in previous patch.
Yes - something went wrong with my local rebasing - I fixed this and reposted it to: https://github.com/KevinOConnor/seabios/tree/testing
-Kevin