diff options
author | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-03-13 16:45:18 +0000 |
---|---|---|
committer | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-03-13 16:45:18 +0000 |
commit | 81e309dd1a768c2fcf2cc9e6acd16dc01f9ce360 (patch) | |
tree | f86855227f2ab1f4963c215128df21effeb7dfbb /firmware | |
parent | 4cee740afa540ce26babb92d26cbb5b524cc245a (diff) | |
download | rockbox-81e309dd1a768c2fcf2cc9e6acd16dc01f9ce360.tar.gz rockbox-81e309dd1a768c2fcf2cc9e6acd16dc01f9ce360.zip |
We had a few set_irq_level(15) left in the code, instead of the new set_irq_level(HIGHEST_IRQ_LEVEL). Only one was really used, in system_reboot(), creating a (unlikely) race condition.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4374 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/system.h | 4 | ||||
-rw-r--r-- | firmware/system.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/firmware/export/system.h b/firmware/export/system.h index 038d9567e0..cfb771d66b 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h | |||
@@ -133,7 +133,7 @@ static inline int tas (volatile int *pointer) | |||
133 | /* Compare And Swap */ | 133 | /* Compare And Swap */ |
134 | static inline int cas (volatile int *pointer,int requested_value,int new_value) | 134 | static inline int cas (volatile int *pointer,int requested_value,int new_value) |
135 | { | 135 | { |
136 | unsigned int oldlevel = set_irq_level(15); | 136 | unsigned int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); |
137 | if (*pointer == requested_value) | 137 | if (*pointer == requested_value) |
138 | { | 138 | { |
139 | *pointer = new_value; | 139 | *pointer = new_value; |
@@ -146,7 +146,7 @@ static inline int cas (volatile int *pointer,int requested_value,int new_value) | |||
146 | 146 | ||
147 | static inline int cas2 (volatile int *pointer1,volatile int *pointer2,int requested_value1,int requested_value2,int new_value1,int new_value2) | 147 | static inline int cas2 (volatile int *pointer1,volatile int *pointer2,int requested_value1,int requested_value2,int new_value1,int new_value2) |
148 | { | 148 | { |
149 | unsigned int oldlevel = set_irq_level(15); | 149 | unsigned int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); |
150 | if (*pointer1 == requested_value1 && *pointer2 == requested_value2) | 150 | if (*pointer1 == requested_value1 && *pointer2 == requested_value2) |
151 | { | 151 | { |
152 | *pointer1 = new_value1; | 152 | *pointer1 = new_value1; |
diff --git a/firmware/system.c b/firmware/system.c index cd2c5e34a0..41358a6776 100644 --- a/firmware/system.c +++ b/firmware/system.c | |||
@@ -302,7 +302,7 @@ void (*vbr[]) (void) __attribute__ ((section (".vectors"))) = | |||
302 | 302 | ||
303 | void system_reboot (void) | 303 | void system_reboot (void) |
304 | { | 304 | { |
305 | set_irq_level(15); | 305 | set_irq_level(HIGHEST_IRQ_LEVEL); |
306 | 306 | ||
307 | asm volatile ("ldc\t%0,vbr" : : "r"(0)); | 307 | asm volatile ("ldc\t%0,vbr" : : "r"(0)); |
308 | 308 | ||