void main(){
	idt_entry *idt;
	dps_utim64 *timer;

	/* Stack Allocate */
	malloc(STACK_SIZE);

	/* IDT Config */
	idt = idt_init();
	idt_entry_setup(idt, IDT_NUM_DPS_UTIM64, &int36_utim64);
	idt_entry_enable(idt, IDT_NUM_DPS_UTIM64);

	/* IDT Set & Load */
	idt_set(idt);
	idt_store();

	/* UTIM64 Setup */
	timer = dps_utim64_init(0);
	dps_utim64_disable(timer);
	timer->mc[0] = 0;
	timer->mc[1] = 0;
	timer->cc[0][0] = 4096;
	timer->cc[0][1] = 0;
	timer->cccfg[0] = UTIM64CFG_ENA | UTIM64CFG_IE | UTIM64CFG_MODE;
	dps_utim64_enable(timer);

	/* Wait for Flag */
	while(flag == 0);

	return;
}
Пример #2
0
void idt_init()
{
	idt_ptr.base = (u32int) &idt;
	idt_ptr.limit = sizeof(idt_descr_t) * IDT_LEN - 1;

	idt_set(&idt_ptr);
	reroute_irqs();
}
Пример #3
0
void idt_install(){
    idtable_ptr.limit = (sizeof (struct idt_entry) * 256) - 1;
    idtable_ptr.base = (unsigned int)&idtable;
    // Initialize memory
	memset(&idtable, 0, sizeof(struct idt_entry) * 256);

	//Add entries to table
    idt_set();
}
Пример #4
0
void init_idt()
{
	idt_ptr.size = sizeof(idt_entry_t) * 256 - 1;
	idt_ptr.base = (u32int)&idt_entries;

	// Master PIC
	outb(0x20, 0x11);
	outb(0x21, 0x20);
	outb(0x21, 0x04);
	outb(0x21, 0x01);
	outb(0x21, 0x00);
	// Slave PIC
	outb(0xA0, 0x11);
	outb(0xA1, 0x28);
	outb(0xA1, 0x02);
	outb(0xA1, 0x01);
	outb(0xA1, 0x00);

	idt_set(0, (u32int)isr0, 0x08, 0x8E);
	idt_set(1, (u32int)isr1, 0x08, 0x8E);
	idt_set(2, (u32int)isr2, 0x08, 0x8E);
	idt_set(3, (u32int)isr3, 0x08, 0x8E);
	idt_set(4, (u32int)isr4, 0x08, 0x8E);
	idt_set(5, (u32int)isr5, 0x08, 0x8E);
	idt_set(6, (u32int)isr6, 0x08, 0x8E);
	idt_set(7, (u32int)isr7, 0x08, 0x8E);
	idt_set(8, (u32int)isr8, 0x08, 0x8E);
	idt_set(9, (u32int)isr9, 0x08, 0x8E);
	idt_set(10, (u32int)isr10, 0x08, 0x8E);
	idt_set(11, (u32int)isr11, 0x08, 0x8E);
	idt_set(12, (u32int)isr12, 0x08, 0x8E);
	idt_set(13, (u32int)isr13, 0x08, 0x8E);
	idt_set(14, (u32int)isr14, 0x08, 0x8E);
	idt_set(15, (u32int)isr15, 0x08, 0x8E);
	idt_set(16, (u32int)isr16, 0x08, 0x8E);
	idt_set(17, (u32int)isr17, 0x08, 0x8E);
	idt_set(18, (u32int)isr18, 0x08, 0x8E);
	idt_set(19, (u32int)isr19, 0x08, 0x8E);
	idt_set(20, (u32int)isr20, 0x08, 0x8E);
	idt_set(21, (u32int)isr21, 0x08, 0x8E);
	idt_set(22, (u32int)isr22, 0x08, 0x8E);
	idt_set(23, (u32int)isr23, 0x08, 0x8E);
	idt_set(24, (u32int)isr24, 0x08, 0x8E);
	idt_set(25, (u32int)isr25, 0x08, 0x8E);
	idt_set(26, (u32int)isr26, 0x08, 0x8E);
	idt_set(27, (u32int)isr27, 0x08, 0x8E);
	idt_set(28, (u32int)isr28, 0x08, 0x8E);
	idt_set(29, (u32int)isr29, 0x08, 0x8E);
	idt_set(30, (u32int)isr30, 0x08, 0x8E);
	idt_set(31, (u32int)isr31, 0x08, 0x8E);

	idt_set(32, (u32int)irq0, 0x08, 0x8E);
	idt_set(33, (u32int)irq1, 0x08, 0x8E);
	idt_set(34, (u32int)irq2, 0x08, 0x8E);
	idt_set(35, (u32int)irq3, 0x08, 0x8E);
	idt_set(36, (u32int)irq4, 0x08, 0x8E);
	idt_set(37, (u32int)irq5, 0x08, 0x8E);
	idt_set(38, (u32int)irq6, 0x08, 0x8E);
	idt_set(39, (u32int)irq7, 0x08, 0x8E);

	idt_set(40, (u32int)irq8, 0x08, 0x8E);
	idt_set(41, (u32int)irq9, 0x08, 0x8E);
	idt_set(42, (u32int)irq10, 0x08, 0x8E);
	idt_set(43, (u32int)irq11, 0x08, 0x8E);
	idt_set(44, (u32int)irq12, 0x08, 0x8E);
	idt_set(45, (u32int)irq13, 0x08, 0x8E);
	idt_set(46, (u32int)irq14, 0x08, 0x8E);
	idt_set(47, (u32int)irq15, 0x08, 0x8E);

	idt_set(128, (u32int)isr128, 0x08, 0xEE);

	idt_flush((u32int)&idt_ptr);
}