📄 int.s
字号:
;******************************************************************************
; TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
;
; Property of Texas Instruments -- For Unrestricted Internal Use Only
; Unauthorized reproduction and/or distribution is strictly prohibited. This
; product is protected under copyright law and trade secret law as an
; unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All
; rights reserved.
;
;
; Filename : int.s
;
; Description : Nucleus initialization
;
; Project : Drivers
;
; Author : proussel@ti.com Patrick Roussel.
;
; Version number : 1.3
;
; Date and time : 07/23/98 15:36:07
;
; Previous delta : 07/23/98 15:36:06
;
; SCCS file : /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release1.5/mod/emu/EMU_MCMP/eva3_drivers/source/SCCS/s.int.s
;
; Sccs Id (SID) : '@(#) int.s 1.3 07/23/98 15:36:07 '
;/*************************************************************************/
;/* */
;/* Copyright (c) 1993 - 1996 Accelerated Technology, Inc. */
;/* */
;/* PROPRIETARY RIGHTS of Accelerated Technology are involved in the */
;/* subject matter of this material. All manufacturing, reproduction, */
;/* use, and sales rights pertaining to this subject matter are governed */
;/* by the license agreement. The recipient of this software implicitly */
;/* accepts the terms of the license. */
;/* */
;/*************************************************************************/
;
;/*************************************************************************/
;/* */
;/* FILE NAME VERSION */
;/* */
;/* int.s PLUS/THUMB/T 1.3 */
;/* */
;/* COMPONENT */
;/* */
;/* IN - Initialization */
;/* */
;/* DESCRIPTION */
;/* */
;/* This file contains the target processor dependent initialization */
;/* routines and data. */
;/* */
;/* AUTHOR */
;/* */
;/* Barry Sellew, Accelerated Technology, Inc. */
;/* */
;/* DATA STRUCTURES */
;/* */
;/* INT_Vectors Interrupt vector table */
;/* */
;/* FUNCTIONS */
;/* */
;/* INT_Initialize Target initialization */
;/* INT_Vectors_Loaded Returns a NU_TRUE if all the */
;/* default vectors are loaded */
;/* INT_Setup_Vector Sets up an actual vector */
;/* */
;/* DEPENDENCIES */
;/* */
;/* nucleus.h System constants */
;/* */
;/* HISTORY */
;/* */
;/* NAME DATE REMARKS */
;/* */
;/* B. Sellew 01-19-1996 Created initial version 1.0 */
;/* B. Sellew 01-22-1996 Verified version 1.0 */
;/* B. Sellew 03-14-1996 Modified to use the ROM */
;/* initialization method, */
;/* resulting in version 1.1 */
;/* B. Sellew 03-14-1996 Verified version 1.1 */
;/* B. Sellew 02-06-1997 Created version 1.3 */
;/* B. Sellew 02-06-1997 Verified version 1.3 */
;/* M. Manning 06-02-1997 Added support for FIQ */
;/* interrupts. Bumped to 1.4 */
;/* M. Manning 06-03-1997 Verified version 1.4 */
;/* */
;/*************************************************************************/
;#define NU_SOURCE_FILE
;
;#include "nucleus.h" /* System constants */
;
;
;/* Define constants used in low-level initialization. */
;
;
; CHECK_CHIPSET_PG
.if CHIPSET_PG = 1
.mmsg "CHIPSET PG is defined and equal to 1"
.elseif CHIPSET_PG = 0
.mmsg "CHIPSET PG is defined and equal to 0"
.endif ; CHIPSET_PG
.if LONG_JUMP = 3
.global IND_CALL
.global _f_load_int_mem
.global _ResetVector
; Initialization for variable S_D_Mem
; NEW COMPILER MANAGEMENT
; S_D_Mem is a UWORD32, and not anymore UWORD8
; See mem_load.c
;
.sect ".cinit"
.align 4
.field 4,32
.field _S_D_Mem+0,32
.field 0,32 ; _S_D_Mem @ 0
.sect ".text"
.global _S_D_Mem
_S_D_Mem: .usect "S_D_Mem",4,4
.sym _S_D_Mem,_S_D_Mem,14,2,32 ; For debug only
; Initialization for variable E_D_Mem
; NEW COMPILER MANAGEMENT
; S_D_Mem is a UWORD32, and not anymore UWORD8
; See mem_load.c
;
.sect ".cinit"
.align 4
.field 4,32
.field _E_D_Mem+0,32
.field 0,32 ; _E_D_Mem @ 0
.sect ".text"
.global _E_D_Mem
_E_D_Mem: .usect "E_D_Mem",4,4
.sym _E_D_Mem,_E_D_Mem,14,2,32 ; For debug only
.endif ; LONGJUMP = 3
.if CHIPSET = 12 | CHIPSET = 15
.global _f_load_int_mem
.global _ResetVector
.endif ; CHIPSET = 12 | CHIPSET = 15
LOCKOUT .equ 00C0h ; Interrupt lockout value
LOCK_MSK .equ 00C0h ; Interrupt lockout mask value
MODE_MASK .equ 001Fh ; Processor Mode Mask
SUP_MODE .equ 0013h ; Supervisor Mode (SVC)
IRQ_MODE .equ 0012h ; Interrupt Mode (IRQ)
FIQ_MODE .equ 0011h ; Fast Interrupt Mode (FIQ)
.if OP_L1_STANDALONE = 0
ABORT_MODE .equ 0017h ; Abort Interrupt Mode
UNDEF_MODE .equ 001Bh ; Undefined Interrupt Mode (should not happen)
.endif ; OP_L1_STANDALONE =0
IRQ_STACK_SIZE .equ 128 ; Number of bytes in IRQ stack (must be align(8))
; Note that the IRQ interrupt,
; by default, is managed by
; Nucleus PLUS. Only several
; words are actually used. The
; system stack is what will
; actually be used for Nuclues
; PLUS managed IRQ interrupts.
FIQ_STACK_SIZE .equ 512 ; Number of bytes in FIQ stack. (must be align(8))
; This value is application
; specific. By default, Nucleus
; does not manage FIQ interrupts
; and furthermore, leaves them
; enabled virtually all the time.
SYSTEM_SIZE .equ 1024 ; Define the system stack size (must be align(8))
TIMER_SIZE .equ 1024 ; Define timer HISR stack size (must be align(8))
TIMER_PRIORITY .equ 2 ; Timer HISR priority (values from
; 0 to 2, where 0 is highest)
.if OP_L1_STANDALONE = 1
; The user must check the demo.map file after the first link to decide what value
; should be assigned to OTHER_SECTIONS, or the user can modify demo.cmd to arrange
; the sections correctly instead of using OTHER_SECTIONS.
OTHER_SECTIONS .equ 700h ; other sections after bss.
.endif ; OP_L1_STANDALONE = 1
;
;/* End of low-level initialization constants. */
;
;
;/* Define the initialization flag that indicates whether or not all of the
; default vectors have been loaded during initialization. */
;
;INT INT_Loaded_Flag;
.def _INT_Loaded_Flag
.bss _INT_Loaded_Flag, 4, 4
;
;/* Define the vector table */
;
.if CHIPSET = 12 | CHIPSET = 15 ; Change for Locosoto
.sect ".start"
.if SECURITY = 2 | CHIPSET = 15 ; For Locosto Always _INT_Initialize
.ref _INT_Initialize
_ResetVector:
B _INT_Initialize
.else
.ref _INT_Bootloader_Start
_ResetVector:
B _INT_Bootloader_Start
.endif ; SECURITY
.sect ".indint"
.def _IndirectVectorTable
_IndirectVectorTable:
LDR PC, [PC, #0x14]
LDR PC, [PC, #0x14]
LDR PC, [PC, #0x14]
LDR PC, [PC, #0x14]
LDR PC, [PC, #0x14]
LDR PC, [PC, #0x14]
LDR PC, [PC, #0x14]
.word INT_Undef_Inst
.word INT_Swi
.word INT_Abort_Prefetch
.word INT_Abort_Data
.word INT_Reserved
.if OP_L1_STANDALONE = 0
.if TI_NUC_MONITOR = 1
.word _INT_IRQ
.else
.word INT_IRQ
.endif
.else
.word INT_IRQ
.endif
.if OP_L1_STANDALONE = 0
.if TI_PROFILER = 1
.word _INT_FIQ
.else
.word INT_FIQ
.endif
.else
.word INT_FIQ
.endif
.else ; CHIPSET = 12 | CHIPSET = 15
.sect ".intvecs"
.if OP_L1_STANDALONE = 1
.ref _INT_Bootloader_Start
.global _ResetVector
_ResetVector:
.endif ; OP_L1_STANDALONE
.if BOARD = 35
B WCP_Start
.elseif BOARD = 46
B _INT_Initialize
.else
B _INT_Bootloader_Start
.endif ; BOARD = 35, 46
B INT_Undef_Inst
B INT_Swi
B INT_Abort_Prefetch
B INT_Abort_Data
B INT_Reserved
.if OP_L1_STANDALONE = 0
B Vect_IRQ
B Vect_FIQ
.else
B INT_IRQ
B INT_FIQ
.endif ; OP_L1_STANDALONE
.if BOARD == 35
WCP_Start:
B _INT_Initialize
.endif
.endif ; CHIPSET = 12 | CHIPSET = 15
;
; .text
;
; .ref cinit
.sect ".inttext"
.global cinit ; Linker symbol for C variable init.
;OMAPS00058957
.if (TOOL_CHOICE > 1)
.global pinit ; Linker symbol for C++ constructor table
.endif
;OMAPS00058957 end
; Address definitions in the section where they are used.
;
;/* Define the global system stack variable. This is setup by the
; initialization routine. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -