OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [lm32/] [sw/] [lm32/] [lm32_system.c] - Rev 48

Compare with Previous | Blame | View Log

 
#ifndef  LM32_SYS_C
	#define LM32_SYS_C
 
/***************************************************************************
 * IRQ handling
 */
 
/****************************************************************************
 * Types
 */
#include <stdint.h>
 
/****************************************************************************/
 
 
 
 
isr_ptr_t isr_table[32];
 
 
 
void isr_null()
{
 
}
 
void irq_handler(uint32_t pending)
{
	int i;
 
	for(i=0; i<32; i++) {
		if (pending & 0x01) (*isr_table[i])();
		pending >>= 1;
	}
}
 
void isr_init()
{
	int i;
	for(i=0; i<32; i++)
		isr_table[i] = &isr_null;
}
 
void isr_register(int irq, isr_ptr_t isr)
{
	isr_table[irq] = isr;
}
 
void isr_unregister(int irq)
{
	isr_table[irq] = &isr_null;
}
 
 
 
 
 
/******************
*	General inttrupt functions for all CPUs added to ProNoC
*******************/
 
 
 
int general_int_add(unsigned long irq, isr_ptr_t handler, void *arg)
{
 
	isr_register(irq, handler);
        return 0;
}
 
 
 
void general_int_enable(unsigned long irq){
	irq_set_mask( (0x00000001L << irq)| irq_get_mask() );
 
}
 
 
extern char _erodata, _fdata,_edata;
void __main (void){ //initial_global_data
 
	char *src = &_erodata;  //start of Data section in Rom
	char *dst = &_fdata;
 
	/* ROM has data at end of rodata; copy it. */
	while (dst < &_edata) {
  	*dst++ = *src++;
	}
 
	main(); //call the main function now
}
 
 
#endif
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.