#ifndef MULTICORE_H_
#define MULTICORE_H_

/* Xilinx includes */
#include "xintc.h"
#include "xtmrctr.h"
#include "pvr.h"
#include "xparameters.h"
#include "mb_interface.h"

#define KERNEL_TABLE_BASEADDR XPAR_KERNEL_BRAM_IF_CNTLR_BASEADDR

/* Kernel includes. */
#define NUM_CORES 4
#define CLOCK_RATE 1000                     /* timer has 1 ms resolution */
#define MASTER_CPU_SYNC_MAGIC_CODE 	31628
#define SLAVE_CPU_SYNC_MAGIC_CODE 	54766

typedef struct
{
    volatile long interruptBridgeSwap[NUM_CORES];
    volatile void *deviceHandlers[NUM_CORES];
    volatile long bootSync;
    volatile void *interruptHandlerPtr;
    volatile void *applicationThreadPtr[NUM_CORES];
} kernelTable;

#endif /* MULTICORE_H_ */
