forked from len0rd/rockbox
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
This commit is contained in:
parent
4cee740afa
commit
81e309dd1a
3 changed files with 4 additions and 4 deletions
|
@ -133,7 +133,7 @@ static inline int tas (volatile int *pointer)
|
|||
/* Compare And Swap */
|
||||
static inline int cas (volatile int *pointer,int requested_value,int new_value)
|
||||
{
|
||||
unsigned int oldlevel = set_irq_level(15);
|
||||
unsigned int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
|
||||
if (*pointer == requested_value)
|
||||
{
|
||||
*pointer = new_value;
|
||||
|
@ -146,7 +146,7 @@ static inline int cas (volatile int *pointer,int requested_value,int new_value)
|
|||
|
||||
static inline int cas2 (volatile int *pointer1,volatile int *pointer2,int requested_value1,int requested_value2,int new_value1,int new_value2)
|
||||
{
|
||||
unsigned int oldlevel = set_irq_level(15);
|
||||
unsigned int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
|
||||
if (*pointer1 == requested_value1 && *pointer2 == requested_value2)
|
||||
{
|
||||
*pointer1 = new_value1;
|
||||
|
|
|
@ -302,7 +302,7 @@ void (*vbr[]) (void) __attribute__ ((section (".vectors"))) =
|
|||
|
||||
void system_reboot (void)
|
||||
{
|
||||
set_irq_level(15);
|
||||
set_irq_level(HIGHEST_IRQ_LEVEL);
|
||||
|
||||
asm volatile ("ldc\t%0,vbr" : : "r"(0));
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ void queue_post(struct event_queue *q, int id, void *data)
|
|||
int wr;
|
||||
int oldlevel;
|
||||
|
||||
oldlevel = set_irq_level(15);
|
||||
oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
|
||||
wr = (q->write++) & QUEUE_LENGTH_MASK;
|
||||
|
||||
q->events[wr].id = id;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue