]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR_ARM/System/IAR/src/loader_init.asm
FreeRTOS source:
[freertos] / FreeRTOS / Demo / CORTEX_R4F_RZ_T_GCC_IAR_ARM / System / IAR / src / loader_init.asm
diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR_ARM/System/IAR/src/loader_init.asm b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR_ARM/System/IAR/src/loader_init.asm
deleted file mode 100644 (file)
index fe8b0fe..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-;*******************************************************************************\r
-; DISCLAIMER\r
-; This software is supplied by Renesas Electronics Corporation and is only\r
-; intended for use with Renesas products. No other uses are authorized. This\r
-; software is owned by Renesas Electronics Corporation and is protected under\r
-; all applicable laws, including copyright laws.\r
-; THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
-; THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
-; LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
-; AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
-; TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
-; ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
-; FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
-; ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
-; BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
-; Renesas reserves the right, without notice, to make changes to this software\r
-; and to discontinue the availability of this software. By using this software,\r
-; you agree to the additional terms and conditions found by accessing the\r
-; following link:\r
-; http://www.renesas.com/disclaimer\r
-;\r
-; Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.\r
-;******************************************************************************\r
-;*******************************************************************************\r
-; System Name  : RZ/T1 Init program\r
-; File Name    : loader_init.asm\r
-; Version      : 0.1\r
-; Device       : R7S9100xx\r
-; Abstract     : Loader program 1\r
-; Tool-Chain   : IAR Embedded Workbench Ver.7.20\r
-; OS           : not use\r
-; H/W Platform : Renesas Starter Kit for RZ/T1(Preliminary)\r
-; Description  : Description interrupt service routine of RZ/T1\r
-; Limitation   : none\r
-;******************************************************************************\r
-;*******************************************************************************\r
-; History      : DD.MM.YYYY Version  Description\r
-;              :                     First Release\r
-;******************************************************************************\r
-\r
-    SECTION IRQ_STACK:DATA:NOROOT(3)\r
-    SECTION FIQ_STACK:DATA:NOROOT(3)\r
-    SECTION SVC_STACK:DATA:NOROOT(3)\r
-    SECTION ABT_STACK:DATA:NOROOT(3)\r
-    SECTION UND_STACK:DATA:NOROOT(3)\r
-    SECTION CSTACK:DATA:NOROOT(3)\r
-  \r
-    SECTION LDR_DATA_RBLOCK:DATA:ROOT(2)\r
-    SECTION LDR_DATA_WBLOCK:DATA:ROOT(2)\r
-\r
-    SECTION M3_PRG_RBLOCK:DATA:ROOT(2)\r
-    SECTION M3_PRG_WBLOCK:DATA:ROOT(2)\r
-\r
-; This program is allocated to section "d_ldr_prg" \r
-    SECTION d_ldr_prg:CODE:ROOT(2)\r
-    \r
-    ARM\r
-    \r
-    PUBLIC loader_init1\r
-    PUBLIC set_low_vec\r
-    PUBLIC cache_init\r
-    PUBLIC mpu_init\r
-    IMPORT loader_init2\r
-\r
\r
-;***********************************************************************\r
-; Function Name : loader_init1\r
-; Description   : Initialize sysytem by loader program\r
-; Arguments     : none\r
-; Return Value  : none\r
-;***********************************************************************\r
-loader_init1:\r
\r
-stack_init:\r
-    ; Stack setting  \r
-    cps  #17  ; FIQ mode\r
-    ldr  sp, =SFE(FIQ_STACK)\r
-    cps  #18  ; IRQ mode\r
-    ldr  sp, =SFE(IRQ_STACK)\r
-    cps  #23  ; Abort mode\r
-    ldr  sp, =SFE(ABT_STACK)\r
-    cps  #27  ; Undef mode\r
-    ldr  sp, =SFE(UND_STACK)\r
-    cps  #31  ; System mode\r
-    ldr  sp, =SFE(CSTACK)\r
-    cps  #19  ; SVC mode\r
-    ldr  sp, =SFE(SVC_STACK)\r
\r
-vfp_init:  \r
-    ; Initialize VFP setting\r
-    mrc  p15, #0, r0, c1, c0, #2  ; Enables cp10 and cp11 accessing\r
-    orr  r0, r0, #0xF00000\r
-    mcr  p15, #0, r0, c1, c0, #2\r
-    isb                           ; Ensuring Context-changing\r
-    \r
-    mov  r0, #0x40000000  ; Enables VFP operation\r
-    vmsr  fpexc, r0\r
-     \r
-data_init:   \r
-    ; Initialize variables has initialized value of loader_init2.\r
-    ; Variables has no initialized value already be initialized to zero \r
-    ; in boot sequence(Clear ATCM and BTCM).\r
-    ldr  r0, =SFB(LDR_DATA_RBLOCK)\r
-    ldr  r1, =SFB(LDR_DATA_WBLOCK)\r
-    ldr  r2, =SIZEOF(LDR_DATA_WBLOCK)\r
-    cmp  r2, #0\r
-#ifdef DUAL_CORE\r
-    beq  m3_init\r
-#else\r
-    beq  jump_loader_init2\r
-#endif\r
-   \r
-copy_to_LDR_DATA:\r
-    ldrb  r3, [r0], #1\r
-    strb  r3, [r1], #1\r
-    subs  r2, r2, #1\r
-    bne   copy_to_LDR_DATA    \r
-    dsb                     ; Ensuring data-changing\r
-\r
-#ifdef DUAL_CORE\r
-\r
-m3_init:\r
-    ; Initialize image for Cortex-M3 core\r
-    ldr  r0, =SFB(M3_PRG_RBLOCK)\r
-    ldr  r1, =SFB(M3_PRG_WBLOCK)\r
-    ldr  r2, =SIZEOF(M3_PRG_WBLOCK)\r
-    cmp  r2, #0\r
-    beq  jump_loader_init2\r
-   \r
-copy_to_M3_PRG:\r
-    ldrb  r3, [r0], #1\r
-    strb  r3, [r1], #1\r
-    subs  r2, r2, #1\r
-    bne   copy_to_M3_PRG    \r
-    dsb                     ; Ensuring data-changing\r
-\r
-#endif\r
-\r
-    ; Jump to loader_init2\r
-jump_loader_init2:\r
-    ldr  r0, =loader_init2\r
-    bx  r0\r
-\r
-;***********************************************************************\r
-; Function Name : cache_init\r
-; Description   : Initialize I1, D1 cache and MPU settings\r
-; Arguments     : none\r
-; Return Value  : none\r
-;***********************************************************************\r
-\r
-;*******************************************************************************\r
-; Macro definitions\r
-;*******************************************************************************\r
-\r
-SCTLR_BR:  dcd  0x00020000\r
-SCTLR_M:   dcd  0x00000001\r
-SCTLR_I_C: dcd  0x00001004\r
\r
-DRBAR_REGION_0: dcd  0x04000000  ; Base address = 0400_0000h\r
-DRACR_REGION_0: dcd  0x0000030C  ; R/W(full), Normal, Non-cache, share\r
-DRSR_REGION_0:  dcd  0x00000025  ; Size 512KB, MPU enable\r
-\r
-DRBAR_REGION_1: dcd  0x10000000  ; Base address = 1000_0000h \r
-DRACR_REGION_1: dcd  0x0000030C  ; R/W(full), Normal, Non-cache, share\r
-DRSR_REGION_1:  dcd  0x00000033  ; Size 64MB, MPU enable \r
-\r
-DRBAR_REGION_2: dcd  0x20000000  ; Base address = 2000_0000h \r
-DRACR_REGION_2: dcd  0x0000030C  ; R/W(full), Normal, Non-cache, share\r
-DRSR_REGION_2:  dcd  0x00000025  ; Size 512KB, MPU enable\r
-\r
-DRBAR_REGION_3: dcd  0x22000000  ; Base address = 2200_0000h \r
-DRACR_REGION_3: dcd  0x00000307  ; R/W(full), Normal, Write-back no allocate, share\r
-DRSR_REGION_3:  dcd  0x00000033  ; Size 64MB, MPU enable \r
-\r
-DRBAR_REGION_4: dcd  0x30000000  ; Base address = 3000_0000h \r
-DRACR_REGION_4: dcd  0x0000030F  ; R/W(full), Normal, Write-back write allocate, share \r
-DRSR_REGION_4:  dcd  0x00000033  ; Size 64MB, MPU enable  \r
-\r
-DRBAR_REGION_5: dcd  0x40000000  ; Base address = 4000_0000h \r
-DRACR_REGION_5: dcd  0x0000030F  ; R/W(full), Normal, Write-back write allocate, share \r
-DRSR_REGION_5:  dcd  0x00000035  ; Size 128MB, MPU enable  \r
\r
-DRBAR_REGION_6: dcd  0x48000000  ; Base address = 4800_0000h \r
-DRACR_REGION_6: dcd  0x0000030F  ; R/W(full), Normal, Write-back write allocate, share \r
-DRSR_REGION_6:  dcd  0x00000035  ; Size 128MB, MPU enable  \r
-\r
-DRBAR_REGION_7: dcd  0x50000000  ; Base address = 5000_0000h \r
-DRACR_REGION_7: dcd  0x00001305  ; R/W(full), XN, Device, share \r
-DRSR_REGION_7:  dcd  0x00000035  ; Size 128MB, MPU enable  \r
-\r
-DRBAR_REGION_8: dcd  0x60000000  ; Base address = 6000_0000h\r
-DRACR_REGION_8: dcd  0x0000030C  ; R/W(full), Normal, Non-cache, share \r
-DRSR_REGION_8:  dcd  0x00000035  ; Size 128MB, MPU enable  \r
-\r
-DRBAR_REGION_9: dcd  0x68000000  ; Base address = 6800_0000h \r
-DRACR_REGION_9: dcd  0x0000030C  ; R/W(full), Normal, Non-cache, share \r
-DRSR_REGION_9:  dcd  0x00000035  ; Size 128MB, MPU enable  \r
\r
-DRBAR_REGION_10: dcd  0x70000000 ; Base address = 7000_0000h \r
-DRACR_REGION_10: dcd  0x00001305 ; R/W(full), XN, Device, share \r
-DRSR_REGION_10:  dcd  0x00000035 ; Size 128MB, MPU enable  \r
-\r
-DRBAR_REGION_11: dcd  0x80000000 ; Base address = 8000_0000h \r
-DRACR_REGION_11: dcd  0x00001305 ; R/W(full), XN, Device, share \r
-DRSR_REGION_11:  dcd  0x0000003D ; Size 2GB, MPU enable  \r
-\r
-cache_init:\r
-    push  {lr}\r
-\r
-cache_invalidate:\r
-    ; Invalidate the I1, D1 cache \r
-    mov  r0, #0\r
-    mcr  p15, #0, r0, c7, c5, #0   ; Invalidate all Instruction Caches (Write-value is Ignored)\r
-    isb                            ; Ensuring Context-changing\r
-    mcr  p15, #0, r0, c15, c5, #0  ; Invalidate all Data Caches (Write-value is Ignored)\r
-    isb                            ; Ensuring Context-changing\r
-  \r
-    ; Adopt default memory map as background map.\r
-    ldr  r0, SCTLR_BR           ; Set SCTLR.BR bit to 1\r
-    mrc  p15, 0, r1, c1, c0, 0  \r
-    orr  r1, r1, r0\r
-    dsb\r
-    mcr  p15, 0, r1, c1, c0, 0  \r
-    isb                         ; Ensuring Context-changing\r
-    \r
-    ; Initialize MPU settings (region 0 to 11)\r
-    ; Define region 0\r
-    mov  r0,  #0\r
-    ldr  r1, DRBAR_REGION_0\r
-    ldr  r2, DRACR_REGION_0\r
-    ldr  r3, DRSR_REGION_0\r
-    bl  mpu_init\r
-\r
-    ; Define region 1\r
-    mov  r0,  #1\r
-    ldr  r1, DRBAR_REGION_1\r
-    ldr  r2, DRACR_REGION_1\r
-    ldr  r3, DRSR_REGION_1\r
-    bl  mpu_init\r
-\r
-    ; Define region 2\r
-    mov  r0,  #2\r
-    ldr  r1, DRBAR_REGION_2\r
-    ldr  r2, DRACR_REGION_2\r
-    ldr  r3, DRSR_REGION_2\r
-    bl  mpu_init\r
-\r
-    ; Define region 3\r
-    mov  r0,  #3\r
-    ldr  r1, DRBAR_REGION_3\r
-    ldr  r2, DRACR_REGION_3\r
-    ldr  r3, DRSR_REGION_3\r
-    bl  mpu_init\r
-\r
-    ; Define region 4\r
-    mov  r0,  #4\r
-    ldr  r1, DRBAR_REGION_4\r
-    ldr  r2, DRACR_REGION_4\r
-    ldr  r3, DRSR_REGION_4\r
-    bl  mpu_init\r
-\r
-    ; Define region 5\r
-    mov  r0,  #5\r
-    ldr  r1, DRBAR_REGION_5\r
-    ldr  r2, DRACR_REGION_5\r
-    ldr  r3, DRSR_REGION_5\r
-    bl  mpu_init\r
-\r
-    ; Define region 6\r
-    mov  r0,  #6\r
-    ldr  r1, DRBAR_REGION_6\r
-    ldr  r2, DRACR_REGION_6\r
-    ldr  r3, DRSR_REGION_6\r
-    bl  mpu_init\r
-\r
-    ; Define region 7\r
-    mov  r0,  #7\r
-    ldr  r1, DRBAR_REGION_7\r
-    ldr  r2, DRACR_REGION_7\r
-    ldr  r3, DRSR_REGION_7\r
-    bl  mpu_init\r
-\r
-    ; Define region 8\r
-    mov  r0,  #8\r
-    ldr  r1, DRBAR_REGION_8\r
-    ldr  r2, DRACR_REGION_8\r
-    ldr  r3, DRSR_REGION_8\r
-    bl  mpu_init\r
-\r
-    ; Define region 9\r
-    mov  r0,  #9\r
-    ldr  r1, DRBAR_REGION_9\r
-    ldr  r2, DRACR_REGION_9\r
-    ldr  r3, DRSR_REGION_9\r
-    bl  mpu_init\r
-\r
-    ; Define region 10\r
-    mov  r0,  #10\r
-    ldr  r1, DRBAR_REGION_10\r
-    ldr  r2, DRACR_REGION_10\r
-    ldr  r3, DRSR_REGION_10\r
-    bl  mpu_init\r
-\r
-    ; Define region 11\r
-    mov  r0,  #11\r
-    ldr  r1, DRBAR_REGION_11\r
-    ldr  r2, DRACR_REGION_11\r
-    ldr  r3, DRSR_REGION_11\r
-    bl  mpu_init\r
-    \r
-    ; Enables MPU operation\r
-    ldr  r0, SCTLR_M            ; Set SCTLR.M bit to 1\r
-    mrc  p15, 0, r1, c1, c0, 0  \r
-    orr  r1, r1, r0\r
-    dsb\r
-    mcr  p15, 0, r1, c1, c0, 0  \r
-    isb                         ; Ensuring Context-changing\r
-    \r
-    ; Enables I1,D1 cache operation\r
-    ldr  r0, SCTLR_I_C          ; Set SCTLR.I and C bit to 1\r
-    mrc  p15, 0, r1, c1, c0, 0  \r
-    orr  r1, r1, r0\r
-    dsb\r
-    mcr  p15, 0, r1, c1, c0, 0  \r
-    isb                         ; Ensuring Context-changing\r
-\r
-    pop  {pc}\r
-    bx  lr\r
-\r
-;***********************************************************************\r
-; Function Name : mpu_init\r
-; Description   : Initialize MPU settings\r
-; Arguments     : none\r
-; Return Value  : none\r
-;***********************************************************************\r
-mpu_init:\r
-    ; RGNR(MPU Memory Region Number Register)\r
-    mcr p15, #0, r0, c6, c2, #0\r
-    isb                             ; Ensuring Context-changing\r
-    \r
-    ; DRBAR(Data Region Base Address Register)\r
-    mcr  p15, #0, r1, c6, c1, #0\r
-    isb                             ; Ensuring Context-changing\r
-\r
-    ; DRACR(Data Region Access Control Register)\r
-    mcr p15, #0, r2, c6, c1, #4\r
-    isb                             ; Ensuring Context-changing\r
-\r
-    ; DRSR(Data Region Size and Enable Register)\r
-    mcr p15, #0, r3, c6, c1, #2\r
-    isb                             ; Ensuring Context-changing\r
-    \r
-    bx      lr\r
-\r
-\r
-;***********************************************************************\r
-; Function Name : set_low_vec\r
-; Description   : Initialize sysytem by loader program\r
-; Arguments     : none\r
-; Return Value  : none\r
-;***********************************************************************\r
-set_low_vec:\r
-    mrc  p15, 0, r0, c1, c0, 0  ; Set SCTLR.V bit to 1 (low-vector)\r
-    and  r0, r0, #0xFFFFDFFF\r
-    mcr  p15, 0, r0, c1, c0, 0\r
-    isb                         ; Ensuring Context-changing\r
-    \r
-    bx  lr  \r
-\r
-    END   \r
-; End of File \r