37 lines
1.1 KiB
C
37 lines
1.1 KiB
C
|
/*
|
||
|
* Copyright (c) 2016 Cadence Design Systems, Inc.
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*/
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <stdio.h>
|
||
|
#include <xtensa_api.h>
|
||
|
#include <kernel_arch_data.h>
|
||
|
#include <misc/__assert.h>
|
||
|
/*
|
||
|
* @internal
|
||
|
*
|
||
|
* @brief Set an interrupt's priority
|
||
|
*
|
||
|
* The priority is verified if ASSERT_ON is enabled.
|
||
|
*
|
||
|
* The priority is verified if ASSERT_ON is enabled. The maximum number
|
||
|
* of priority levels is a little complex, as there are some hardware
|
||
|
* priority levels which are reserved: three for various types of exceptions,
|
||
|
* and possibly one additional to support zero latency interrupts.
|
||
|
*
|
||
|
* Valid values are from 1 to 6. Interrupts of priority 1 are not masked when
|
||
|
* interrupts are locked system-wide, so care must be taken when using them. ISR
|
||
|
* installed with priority 0 interrupts cannot make kernel calls.
|
||
|
*
|
||
|
* @return N/A
|
||
|
*/
|
||
|
|
||
|
void _irq_priority_set(unsigned int irq, unsigned int prio, uint32_t flags)
|
||
|
{
|
||
|
__ASSERT(prio < XCHAL_EXCM_LEVEL + 1,
|
||
|
"invalid priority %d! values must be less than %d\n",
|
||
|
prio, XCHAL_EXCM_LEVEL + 1);
|
||
|
/* TODO: Write code to set priority if this is ever possible on Xtensa */
|
||
|
}
|