summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Korr <alkorr@rockbox.org>2002-04-25 12:43:55 +0000
committerAlan Korr <alkorr@rockbox.org>2002-04-25 12:43:55 +0000
commita06a3d0721c8968ab7d62cefb6f258ea7ccb6320 (patch)
treea48f756d9737c285925cc25ac316646445e62fa9
parent81df66031e4db9bf11f9333e5cc9e045f2e5467a (diff)
downloadrockbox-a06a3d0721c8968ab7d62cefb6f258ea7ccb6320.zip
rockbox-a06a3d0721c8968ab7d62cefb6f258ea7ccb6320.tar.gz
rockbox-a06a3d0721c8968ab7d62cefb6f258ea7ccb6320.tar.bz2
rockbox-a06a3d0721c8968ab7d62cefb6f258ea7ccb6320.tar.xz
Add registers macl and mach in save and restore context functions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@228 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/thread.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c
index 4a13d53..dc7d425 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -23,6 +23,8 @@ typedef union
struct regs_t
{
unsigned int r[7]; /* Registers r8 thru r14 */
+ unsigned int mach,
+ macl;
void *sp; /* Stack pointer (r15) */
unsigned int sr; /* Status register */
#if 0
@@ -111,6 +113,8 @@ static inline void stctx(void* addr)
/* here a far better code */
asm volatile ("sts.l pr, @-%0\n\t"
"stc.l sr, @-%0\n\t"
+ "sts.l macl,@-%0\n\t"
+ "sts.l mach,@-%0\n\t"
"mov.l r15, @-%0\n\t"
"mov.l r14, @-%0\n\t"
"mov.l r13, @-%0\n\t"
@@ -159,6 +163,8 @@ static inline void ldctx(void* addr)
"mov.l @%0+,r13\n\t"
"mov.l @%0+,r14\n\t"
"mov.l @%0+,r15\n\t"
+ "lds.l @%0+,mach\n\t"
+ "lds.l @%0+,macl\n\t"
"ldc.l @%0+,sr\n\t"
"lds.l @%0+,pr" : : "r" (addr));