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

Subversion Repositories potato

[/] [potato/] [trunk/] [benchmarks/] [sha256/] [main.c] - Diff between revs 13 and 20

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 13 Rev 20
Line 14... Line 14...
#include "uart.h"
#include "uart.h"
 
 
static int led_status = 0;
static int led_status = 0;
static volatile int hashes_per_second = 0;
static volatile int hashes_per_second = 0;
 
 
void exception_handler(uint32_t cause, void * epc)
// Handle an exception/interrupt.
 
// Arguments:
 
// - cause: exception cause, see potato.h for values
 
// - epc: exception return address
 
// - regbase: base of the stored context, can be used for printing all
 
//            registers with regbase[0] = x1 and upwards.
 
void exception_handler(uint32_t cause, void * epc, void * regbase)
 
{
 
        if(cause == (CAUSE_IRQ_BASE + 5)) // Timer interrupt
{
{
        uart_puts(IO_ADDRESS(UART_BASE), "Hashes per second: ");
        uart_puts(IO_ADDRESS(UART_BASE), "Hashes per second: ");
        uart_puth(IO_ADDRESS(UART_BASE), hashes_per_second);
        uart_puth(IO_ADDRESS(UART_BASE), hashes_per_second);
        uart_puts(IO_ADDRESS(UART_BASE), "\n\r");
        uart_puts(IO_ADDRESS(UART_BASE), "\n\r");
 
 
Line 29... Line 37...
        } else {
        } else {
                gpio_set_output(IO_ADDRESS(GPIO2_BASE), 0);
                gpio_set_output(IO_ADDRESS(GPIO2_BASE), 0);
                led_status = 0;
                led_status = 0;
        }
        }
 
 
        timer_reset(IO_ADDRESS(TIMER_BASE));
 
        hashes_per_second = 0;
        hashes_per_second = 0;
 
                timer_reset(IO_ADDRESS(TIMER_BASE));
 
        } else {
 
                uart_puts(IO_ADDRESS(UART_BASE), "Unhandled exception!\n\r");
 
                uart_puts(IO_ADDRESS(UART_BASE), "Cause: ");
 
                uart_puth(IO_ADDRESS(UART_BASE), cause);
 
                uart_puts(IO_ADDRESS(UART_BASE), "\n\r");
 
                uart_puts(IO_ADDRESS(UART_BASE), "EPC: ");
 
                uart_puth(IO_ADDRESS(UART_BASE), (uint32_t) epc);
 
                uart_puts(IO_ADDRESS(UART_BASE), "\n\r");
 
 
 
                while(1) asm volatile("nop\n");
 
        }
}
}
 
 
int main(void)
int main(void)
{
{
        // Configure GPIOs:
        // Configure GPIOs:
        gpio_set_direction(IO_ADDRESS(GPIO1_BASE), 0x0000); // Switches
        gpio_set_direction(IO_ADDRESS(GPIO1_BASE), 0x0000); // Switches
        gpio_set_direction(IO_ADDRESS(GPIO2_BASE), 0xffff); // LEDs
        gpio_set_direction(IO_ADDRESS(GPIO2_BASE), 0xffff); // LEDs
 
 
        // Set up the timer:
        // Set up the timer:
        timer_set(IO_ADDRESS(TIMER_BASE), 50000000);
        timer_set(IO_ADDRESS(TIMER_BASE), SYSTEM_CLK_FREQ);
 
 
        // Print a startup message:
        // Print a startup message:
        uart_puts(IO_ADDRESS(UART_BASE), "The Potato Processor SHA256 Benchmark\n\r\n\r");
        uart_puts(IO_ADDRESS(UART_BASE), "The Potato Processor SHA256 Benchmark\n\r\n\r");
 
 
        // Enable interrupts:
        // Enable interrupts:

powered by: WebSVN 2.1.0

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