[dev][timer][arm_generic] Register interrupt handlers on secondary cpus

Change-Id: Ib67a0b7725781b5513b32263938f80e0ed3902a3
This commit is contained in:
Arve Hjønnevåg
2015-01-23 19:33:03 -08:00
parent fd51c054b6
commit d242e308b7
2 changed files with 16 additions and 5 deletions

View File

@@ -21,6 +21,7 @@
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <arch/ops.h>
#include <assert.h>
#include <platform.h>
#include <platform/interrupts.h>
@@ -34,6 +35,7 @@
#include <lib/fixed_point.h>
static platform_timer_callback t_callback;
static int timer_irq;
struct fp_32_64 cntpct_per_ms;
struct fp_32_64 ms_per_cntpct;
@@ -139,10 +141,6 @@ lk_time_t current_time(void)
return cntpct_to_lk_time(read_cntpct());
}
void arm_generic_timer_init_secondary_cpu(void)
{
}
static uint32_t abs_int32(int32_t a)
{
return (a > 0) ? a : -a;
@@ -259,8 +257,22 @@ void arm_generic_timer_init(int irq, uint32_t freq_override)
arm_generic_timer_init_conversion_factors(cntfrq);
test_time_conversions(cntfrq);
LTRACEF("register irq %d on cpu %d\n", irq, arch_curr_cpu_num());
register_int_handler(irq, &platform_tick, NULL);
unmask_interrupt(irq);
timer_irq = irq;
}
static void arm_generic_timer_init_secondary_cpu(uint level)
{
LTRACEF("register irq %d on cpu %d\n", timer_irq, arch_curr_cpu_num());
register_int_handler(timer_irq, &platform_tick, NULL);
unmask_interrupt(timer_irq);
}
LK_INIT_HOOK_FLAGS(arm_generic_timer_init_secondary_cpu,
arm_generic_timer_init_secondary_cpu,
LK_INIT_LEVEL_PLATFORM, LK_INIT_FLAG_SECONDARY_CPUS);
/* vim: set noexpandtab: */

View File

@@ -27,7 +27,6 @@
/* if freq_override != 0, use that as the operating frequency instead of CNTFRQ register */
void arm_generic_timer_init(int irq, uint32_t freq_override);
void arm_generic_timer_init_secondary_cpu(void);
#endif