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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [OpenRISC_SIM_GCC/] [arch/] [support.c] - Blame information for rev 621

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 584 jeremybenn
/* Support */
2
#include "spr_defs.h"
3
#include "support.h"
4
 
5
/* Start function, called by reset exception handler.  */
6
static char *main_argv[2] = {"NULL", " "};
7
 
8
void _main(void) {
9
        int i = main(2, main_argv);
10
        or32_exit (i);
11
}
12
 
13
/* return value by making a syscall */
14
void or32_exit(int i) {
15
        asm("l.add r3,r0,%0": : "r" (i));
16
        asm("l.nop %0": :"K" (NOP_EXIT));
17
        while (1);
18
}
19
 
20
 
21
/* print long */
22
void report(unsigned long value) {
23
        asm("l.addi\tr3,%0,0": :"r" (value));
24
        asm("l.nop %0": :"K" (NOP_REPORT));
25
}
26
 
27
/* For writing into SPR. */
28
void mtspr(unsigned long spr, unsigned long value) {
29
        asm("l.mtspr\t\t%0,%1,0": : "r" (spr), "r" (value));
30
}
31
 
32
/* For reading SPR. */
33
unsigned long mfspr(unsigned long spr) {
34
        unsigned long value;
35
        asm("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr));
36
        return value;
37
}

powered by: WebSVN 2.1.0

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