Changes between Version 3 and Version 4 of Projects/GSoC/OpenRISC

Jul 26, 2014, 7:52:14 AM (5 years ago)

/* RTEMS */


  • Projects/GSoC/OpenRISC

    v3 v4  
    3333= '''[wiki:RTEMS RTEMS]''' =
    35 TBD
     36A new cpukit/cpu/or1k directory has been added to support the new OpenRISC port. This includes basic functions which are necessary for RTEMS to run any OpenRISC programs. The following are some of these functions:
     37 *  Context Switch: It's needed for any OS that requires multi-tasking operations. Simply, it's a similar version of setjmp/longjmp written in assembly. Since context switch is more like function calls, only callee-destroyed registers are stored (and other interrupt context registers).
     38 *  ISR_Handler: a generic ISR handler is provided which contains prologue code that handles isr_level, disabling interrupts, disabling multi-tasking, store interrupted task context, and then jump to the C handler from a vector table. After ISR C routine returns back, the context is restored, and a check for dispatch_needed is done to decide whether a context switch is necessary or not and if so do the magic and jump to _Thread_Dispatch.
     40Currently there are only two levels of interrupts: disable/enable. In the future, fast context switch support could be added which supports up to 15 levels. Also ISR disable/enable routines are provided there.
     41 *  CPU initialization: This routine simply set stack and frame pointers along with setting return address to the entry point of the program.
     42 *  CPU architecture configurations: OR1K port provide the architecture specifications at cpukit. Some important configurations like: in which direction the stack grows (down for or1k), how interrupt stack is allocated, other features existence like FP support. Also context control, interrupt control structures are provided there. Most of these configurations can be found at or1k/cpu.h
     43 *  print context control: this is a helper routine that prints out the context control information in a readable way just for debugging purposes.
    3644= '''[wiki:BSP(s) BSP(s)]''' =