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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Source/] [portable/] [GCC/] [OpenRISC/] [portmacro.h] - Diff between revs 665 and 675

Show entire file | Details | Blame | View Log

Rev 665 Rev 675
Line 82... Line 82...
#define portCRITICAL_NESTING_IN_TCB             1
#define portCRITICAL_NESTING_IN_TCB             1
#define portINSTRUCTION_SIZE                    ( ( portSTACK_TYPE ) 4 )
#define portINSTRUCTION_SIZE                    ( ( portSTACK_TYPE ) 4 )
#define portNO_CRITICAL_SECTION_NESTING ( ( portSTACK_TYPE ) 0 )
#define portNO_CRITICAL_SECTION_NESTING ( ( portSTACK_TYPE ) 0 )
 
 
#define portYIELD_FROM_ISR()                    portYIELD()
#define portYIELD_FROM_ISR()                    portYIELD()
#define portYIELD()             {       \
#define portYIELD()             \
        __asm__ __volatile__ ( "l.nop       " ); \
        __asm__ __volatile__ (  "l.nop       \n\t"  \
        __asm__ __volatile__ ( "l.sys 0x0FCC" ); \
                                                        "l.sys 0x0FCC\n\t"  \
        __asm__ __volatile__ ( "l.nop       " ); \
                                                        "l.nop       \n\t"  \
}
        );
#define portNOP()               __asm__ __volatile__ ( "l.nop" )
#define portNOP()               __asm__ __volatile__ ( "l.nop" )
 
 
 
 
void vPortDisableInterrupts( void );
/*-----------------------------------------------------------*/
void vPortEnableInterrupts( void );
#define portDISABLE_INTERRUPTS()        { extern inline void vPortDisableInterrupts( void ); vPortDisableInterrupts(); }
#define portDISABLE_INTERRUPTS()        vPortDisableInterrupts()
#define portENABLE_INTERRUPTS()         { extern inline void vPortEnableInterrupts( void );  vPortEnableInterrupts();  }
#define portENABLE_INTERRUPTS()         vPortEnableInterrupts()
 
 
 
 
#define portENTER_CRITICAL()            { extern void vTaskEnterCritical( void ); vTaskEnterCritical();  }
 
#define portEXIT_CRITICAL()                     { extern void vTaskExitCritical( void );  vTaskExitCritical();   }
/*-----------------------------------------------------------*/
/*-----------------------------------------------------------*/
extern void vTaskEnterCritical( void );
 
extern void vTaskExitCritical( void );
 
#define portENTER_CRITICAL()            vTaskEnterCritical()
 
#define portEXIT_CRITICAL()                     vTaskExitCritical()
 
 
 
/* Task function macros as described on the FreeRTOS.org WEB site. */
/* Task function macros as described on the FreeRTOS.org WEB site. */
#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )
#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
 
 
#define portRESTORE_CONTEXT()                   \
/*
        asm volatile (                              \
        Context layout
        "   .global pxCurrentTCB            \n\t"   \
        0x00    r9
        "   # restore stack pointer         \n\t"   \
        0x04    r2
        "   l.movhi     r3, hi(pxCurrentTCB)    \n\t"   \
        0x08    r3
        "   l.ori       r3, r3, lo(pxCurrentTCB)\n\t"   \
        0x0C    r4
        "   l.lwz       r3, 0x0(r3)                             \n\t"   \
        0x10    r5
        "   l.lwz       r1, 0x0(r3)                             \n\t"   \
        0x14    r6
        "   # restore context               \n\t"   \
        0x18    r7
        "   l.lwz       r9, 0x00(r1)            \n\t"   \
        0x1C    r8
        "   l.lwz       r2, 0x04(r1)            \n\t"   \
        0x20    r10
        "   l.lwz       r6, 0x14(r1)            \n\t"   \
        0x24    r11
        "   l.lwz       r7, 0x18(r1)            \n\t"   \
        0x28    r12
        "   l.lwz       r8, 0x1C(r1)            \n\t"   \
        0x2C    r13
        "   l.lwz       r10, 0x20(r1)           \n\t"   \
        0x30    r14
        "   l.lwz       r11, 0x24(r1)           \n\t"   \
        0x34    r15
        "   l.lwz       r12, 0x28(r1)           \n\t"   \
        0x38    r16
        "   l.lwz       r13, 0x2C(r1)           \n\t"   \
        0x3C    r17
        "   l.lwz       r14, 0x30(r1)           \n\t"   \
        0x40    r18
        "   l.lwz       r15, 0x34(r1)           \n\t"   \
        0x44    r19
        "   l.lwz       r16, 0x38(r1)           \n\t"   \
        0x48    r20
        "   l.lwz       r17, 0x3C(r1)           \n\t"   \
        0x4C    r21
        "   l.lwz       r18, 0x40(r1)           \n\t"   \
        0x50    r22
        "   l.lwz       r19, 0x44(r1)           \n\t"   \
        0x54    r23
        "   l.lwz       r20, 0x48(r1)           \n\t"   \
        0x58    r24
        "   l.lwz       r21, 0x4C(r1)           \n\t"   \
        0x5C    r25
        "   l.lwz       r22, 0x50(r1)           \n\t"   \
        0x60    r26
        "   l.lwz       r23, 0x54(r1)           \n\t"   \
        0x64    r27
        "   l.lwz       r24, 0x58(r1)           \n\t"   \
        0x68    r28
        "   l.lwz       r25, 0x5C(r1)           \n\t"   \
        0x6C    r29
        "   l.lwz       r26, 0x60(r1)           \n\t"   \
        0x70    r30
        "   l.lwz       r27, 0x64(r1)           \n\t"   \
        0x74    r31
        "   l.lwz       r28, 0x68(r1)           \n\t"   \
        0x78    ESR
        "   l.lwz       r29, 0x6C(r1)           \n\t"   \
        0x7C    EPCR
        "   l.lwz       r30, 0x70(r1)           \n\t"   \
*/
        "   l.lwz       r31, 0x74(r1)           \n\t"   \
 
        "   # restore SPR_ESR_BASE(0), SPR_EPCR_BASE(0)\n\t"    \
#define REDZONE_SIZE            (128)
        "   l.lwz       r3, 0x78(r1)                \n\t"   \
#define CONTEXT_SIZE            (128)
        "   l.lwz       r4, 0x7C(r1)                \n\t"   \
#define STACKFRAME_SIZE         (CONTEXT_SIZE + REDZONE_SIZE)
        "   l.mtspr     r0, r3, ((0<<11) + 64)  \n\t"   \
 
        "   l.mtspr     r0, r4, ((0<<11) + 32)  \n\t"   \
 
        "   # restore clobber register      \n\t"   \
 
        "   l.lwz       r3, 0x08(r1)            \n\t"   \
 
        "   l.lwz       r4, 0x0C(r1)            \n\t"   \
 
        "   l.lwz       r5, 0x10(r1)            \n\t"   \
 
        "   l.addi      r1, r1, 132                 \n\t"   \
 
        "   l.rfe                           \n\t"   \
 
        "   l.nop                           \n\t"   \
 
        );
 
 
 
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
 
 

powered by: WebSVN 2.1.0

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