OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/orpsocv2/sw/drivers/or1200
    from Rev 408 to Rev 411
    Reverse comparison

Rev 408 → Rev 411

/exceptions.c
41,7 → 41,7
 
extern void int_main();
 
void (*except_handlers[]) (void) = {0, // 0
void (*except_handlers[]) (void ) = {0, // 0
0, // 1
0, // 2
0, // 3
64,7 → 64,7
 
void
add_handler(unsigned long vector, void (*handler) (void))
add_handler(unsigned long vector, void (*handler) (void *))
{
except_handlers[vector] = handler;
}
/or1200-utils.c
3,13 → 3,15
#include "board.h" // For timer rate (IN_CLK, TICKS_PER_SEC)
 
/* For writing into SPR. */
void mtspr(unsigned long spr, unsigned long value)
void
mtspr(unsigned long spr, unsigned long value)
{
asm("l.mtspr\t\t%0,%1,0": : "r" (spr), "r" (value));
}
 
/* For reading SPR. */
unsigned long mfspr(unsigned long spr)
unsigned long
mfspr(unsigned long spr)
{
unsigned long value;
asm("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr));
17,7 → 19,8
}
 
/* Print out a character via simulator */
void sim_putc(unsigned char c)
void
sim_putc(unsigned char c)
{
asm("l.addi\tr3,%0,0": :"r" (c));
asm("l.nop %0": :"K" (NOP_PUTC));
24,7 → 27,8
}
 
/* print long */
void report(unsigned long value)
void
report(unsigned long value)
{
asm("l.addi\tr3,%0,0": :"r" (value));
asm("l.nop %0": :"K" (NOP_REPORT));
31,7 → 35,8
}
 
/* Loops/exits simulation */
void exit (int i)
void
exit (int i)
{
asm("l.add r3,r0,%0": : "r" (i));
asm("l.nop %0": :"K" (NOP_EXIT));
51,14 → 56,17
 
/* Tick timer functions */
/* Enable tick timer and interrupt generation */
void enable_timer(void)
void
cpu_enable_timer(void)
{
mtspr(SPR_TTMR, SPR_TTMR_IE | SPR_TTMR_RT | ((IN_CLK/TICKS_PER_SEC) & SPR_TTMR_PERIOD));
mtspr(SPR_SR, SPR_SR_TEE | mfspr(SPR_SR));
mtspr(SPR_TTMR, SPR_TTMR_IE | SPR_TTMR_RT | ((IN_CLK/TICKS_PER_SEC) & SPR_TTMR_PERIOD));
 
}
 
/* Disable tick timer and interrupt generation */
void disable_timer(void)
void
cpu_disable_timer(void)
{
// Disable timer: clear it all!
mtspr (SPR_SR, mfspr (SPR_SR) & ~SPR_SR_TEE);
67,7 → 75,9
}
 
/* Timer increment - called by interrupt routine */
void timer_tick(void)
/* Now actually done in interrupt vector code in crt0.S */
void
cpu_timer_tick(void)
{
timer_ticks++;
mtspr(SPR_TTMR, SPR_TTMR_IE | SPR_TTMR_RT | ((IN_CLK/TICKS_PER_SEC) & SPR_TTMR_PERIOD));
74,21 → 84,24
}
 
/* Reset tick counter */
void clear_timer_ticks(void)
void
cpu_reset_timer_ticks(void)
{
timer_ticks=0;
}
 
/* Get tick counter */
unsigned long get_timer_ticks(void)
unsigned long
cpu_get_timer_ticks(void)
{
return timer_ticks;
}
 
/* Wait for 10ms */
void wait_10ms(void)
void
cpu_sleep_10ms(void)
{
unsigned long first_time = get_timer_ticks();
while (first_time == get_timer_ticks());
unsigned long first_time = cpu_get_timer_ticks();
while (first_time == cpu_get_timer_ticks());
}
/include/int.h
1,6 → 1,7
#ifndef _INT_H_
#define _INT_H_
/* Number of interrupt handlers */
 
/* Number of interrupt handlers - really depends on PIC width in OR1200*/
#define MAX_INT_HANDLERS 32
 
/* Handler entry */
13,7 → 14,7
int int_add(unsigned long vect, void (* handler)(void *), void *arg);
 
/* Add exception vector handler */
void add_handler(unsigned long vector, void (*handler) (void));
void add_handler(unsigned long vector, void (* handler) (void *));
 
/* Initialize routine */
int int_init();
/include/or1200-utils.h
39,16 → 39,16
/* Variable keeping track of timer ticks */
extern unsigned long timer_ticks;
/* Enable tick timer and interrupt generation */
void enable_timer(void);
void cpu_enable_timer(void);
/* Disable tick timer and interrupt generation */
void disable_timer(void);
void cpu_disable_timer(void);
/* Timer increment - called by interrupt routine */
void timer_tick(void);
void cpu_timer_tick(void);
/* Reset tick counter */
void clear_timer_ticks(void);
void cpu_reset_timer_ticks(void);
/* Get tick counter */
unsigned long get_timer_ticks(void);
unsigned long cpu_get_timer_ticks(void);
/* Wait for 10ms */
void wait_10ms(void);
void cpu_sleep_10ms(void);
 
#endif

powered by: WebSVN 2.1.0

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