diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2008-01-10 15:04:57 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2008-01-10 15:04:57 +0000 |
commit | 98749abfdfc28095eb45db8d594596c13645ed08 (patch) | |
tree | 656efb0957c86e9448bb1d3c2ec389b84f44de08 | |
parent | a746b895fd7e6be0d430c2fa9624d580b44986c6 (diff) | |
download | ChibiOS-98749abfdfc28095eb45db8d594596c13645ed08.tar.gz ChibiOS-98749abfdfc28095eb45db8d594596c13645ed08.tar.bz2 ChibiOS-98749abfdfc28095eb45db8d594596c13645ed08.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@175 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r-- | ports/ARM7-LPC214x/GCC/chcore.c | 10 | ||||
-rw-r--r-- | ports/ARM7-LPC214x/GCC/chcore.h | 2 | ||||
-rw-r--r-- | src/chschd.c | 6 | ||||
-rw-r--r-- | src/include/ch.h | 2 | ||||
-rw-r--r-- | src/include/scheduler.h | 2 | ||||
-rw-r--r-- | src/include/threads.h | 4 |
6 files changed, 14 insertions, 12 deletions
diff --git a/ports/ARM7-LPC214x/GCC/chcore.c b/ports/ARM7-LPC214x/GCC/chcore.c index fc4c01942..d562a1527 100644 --- a/ports/ARM7-LPC214x/GCC/chcore.c +++ b/ports/ARM7-LPC214x/GCC/chcore.c @@ -69,7 +69,7 @@ void chSysUnlock(void) { }
#endif
-void chSysSwitchI(Context *oldp, Context *newp) {
+void chSysSwitchI(struct Thread *otp, struct Thread *ntp) {
#ifdef THUMB
asm(".p2align 2,, \n\t" \
@@ -80,8 +80,8 @@ void chSysSwitchI(Context *oldp, Context *newp) { #ifdef CH_CURRP_REGISTER_CACHE
asm("stmfd sp!, {r4, r5, r6, r8, r9, r10, r11, lr} \n\t" \
- "str sp, [r0, #0] \n\t" \
- "ldr sp, [r1, #0] \n\t");
+ "str sp, [r0, #16] \n\t" \
+ "ldr sp, [r1, #16] \n\t");
#ifdef THUMB_PRESENT
asm("ldmfd sp!, {r4, r5, r6, r8, r9, r10, r11, lr} \n\t" \
"bx lr \n\t");
@@ -90,8 +90,8 @@ void chSysSwitchI(Context *oldp, Context *newp) { #endif /* !THUMB_PRESENT */
#else /* !CH_CURRP_REGISTER_CACHE */
asm("stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr} \n\t" \
- "str sp, [r0, #0] \n\t" \
- "ldr sp, [r1, #0] \n\t");
+ "str sp, [r0, #16] \n\t" \
+ "ldr sp, [r1, #16] \n\t");
#ifdef THUMB_PRESENT
asm("ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr} \n\t" \
"bx lr \n\t");
diff --git a/ports/ARM7-LPC214x/GCC/chcore.h b/ports/ARM7-LPC214x/GCC/chcore.h index 05223170d..624386f15 100644 --- a/ports/ARM7-LPC214x/GCC/chcore.h +++ b/ports/ARM7-LPC214x/GCC/chcore.h @@ -122,7 +122,7 @@ extern void chSysUnlock(void); void _IdleThread(void *p) __attribute__((noreturn));
void chSysHalt(void);
-void chSysSwitchI(Context *oldp, Context *newp);
+void chSysSwitchI(struct Thread *otp, struct Thread *ntp);
void chSysPuts(char *msg);
void threadstart(void);
diff --git a/src/chschd.c b/src/chschd.c index 4c3b05760..cbd1cfdd3 100644 --- a/src/chschd.c +++ b/src/chschd.c @@ -87,7 +87,7 @@ void chSchGoSleepS(t_tstate newstate) { #ifdef CH_USE_TRACE
chDbgTrace(otp, currp);
#endif
- chSysSwitchI(&otp->p_ctx, &currp->p_ctx);
+ chSysSwitchI(otp, currp);
}
/**
@@ -114,7 +114,7 @@ void chSchWakeupS(Thread *ntp, t_msg msg) { #ifdef CH_USE_TRACE
chDbgTrace(otp, ntp);
#endif
- chSysSwitchI(&otp->p_ctx, &ntp->p_ctx);
+ chSysSwitchI(otp, ntp);
}
}
@@ -131,7 +131,7 @@ void chSchDoRescheduleI(void) { #ifdef CH_USE_TRACE
chDbgTrace(otp, currp);
#endif
- chSysSwitchI(&otp->p_ctx, &currp->p_ctx);
+ chSysSwitchI(otp, currp);
}
/**
diff --git a/src/include/ch.h b/src/include/ch.h index 2c2bb2f7c..dcb486626 100644 --- a/src/include/ch.h +++ b/src/include/ch.h @@ -27,6 +27,8 @@ #define _CHIBIOS_RT_
+struct Thread;
+
#ifndef __DOXIGEN__
#ifndef _CHCONF_H_
#include <chconf.h>
diff --git a/src/include/scheduler.h b/src/include/scheduler.h index 183e3af79..67fae50a4 100644 --- a/src/include/scheduler.h +++ b/src/include/scheduler.h @@ -61,8 +61,8 @@ extern "C" { void chSchReadyI(Thread *tp, t_msg msg);
void chSchGoSleepS(t_tstate newstate);
void chSchWakeupS(Thread *tp, t_msg msg);
- void chSchRescheduleS(void);
void chSchDoRescheduleI(void);
+ void chSchRescheduleS(void);
BOOL chSchRescRequiredI(void);
#ifdef __cplusplus
}
diff --git a/src/include/threads.h b/src/include/threads.h index ba53e6158..a0c2189da 100644 --- a/src/include/threads.h +++ b/src/include/threads.h @@ -47,6 +47,8 @@ struct Thread { t_tstate p_state;
/** Mode flags.*/
t_tmode p_flags;
+ /** Machine dependent processor context.*/
+ Context p_ctx;
/*
* The following fields are merged in unions because they are all
* state-specific fields. This trick saves some extra space for each
@@ -79,8 +81,6 @@ struct Thread { void *p_wtobjp;
#endif
};
- /** Machine dependent processor context.*/
- Context p_ctx;
/*
* Start of the optional fields.
*/
|