URL
https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk
Subversion Repositories open8_urisc
[/] [open8_urisc/] [trunk/] [taskmgr/] [taskmgr_func.s] - Rev 301
Compare with Previous | Blame | View Log
; Copyright (c)2022 Jeremy Seth Henry ; All rights reserved. ; ; Redistribution and use in source and binary forms, with or without ; modification, are permitted provided that the following conditions are met: ; * Redistributions of source code must retain the above copyright ; notice, this list of conditions and the following disclaimer. ; * Redistributions in binary form must reproduce the above copyright ; notice, this list of conditions and the following disclaimer in the ; documentation and/or other materials provided with the distribution, ; where applicable (as part of a user interface, debugging port, etc.) ; ; THIS SOFTWARE IS PROVIDED BY JEREMY SETH HENRY ``AS IS'' AND ANY ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ; DISCLAIMED. IN NO EVENT SHALL JEREMY SETH HENRY BE LIABLE FOR ANY ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; ;------------------------------------------------------------------------------ ; taskmgr_func.s ; ; Program Start, Task Setup, and Core Interrupt Service ; ; Note that the CPU must be in supervisory mode for this code to execute ; properly, which means the I bit MUST be set at startup. This is controlled ; by HDL generics - specifically the supervisor mode enable. ; ; Revision History ; Author Date Change ;---------------- -------- --------------------------------------------------- ; Seth Henry 7/15/22 Initial Release ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; System Bootstrap / Start of ROM ;------------------------------------------------------------------------------ .ORG BOOT_BLOCK BOOTSTRAP: JMP INIT_MAIN ; Jump past the pointer block NOP ; Aligns the data block, but not executed ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; Pointer table ;------------------------------------------------------------------------------ INSTANCE_TASK_POINTERS ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; Task Parameter table ;------------------------------------------------------------------------------ INSTANCE_TASK_EXPORTS ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; System start ;------------------------------------------------------------------------------ INIT_MAIN: BNI INIT_MAIN ; Trap in a loop if supervisor mode isn't set BOOT_SYSTEM ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; RAM Access Fault Shutdown (CALL_PANIC) ;------------------------------------------------------------------------------ RAM_FAULT: PROCESS_RAM_FAULT ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; Task Switch ISR (CALL_TASK_SW) ;------------------------------------------------------------------------------ TASK_SW_INT: SWITCH_TASKS ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; External Interrupt Handler ISR ;------------------------------------------------------------------------------ EXT_INT_MGR: .IFDEF INTMGR16 CHECK_EXTERNAL_IO_INTS16 .ELSE CHECK_EXTERNAL_IO_INTS .ENDIF ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; ISR Context Function Calls (CALL_SUPV_FN<n>) ;------------------------------------------------------------------------------ INSTANCE_SUPV_FUNCS ;------------------------------------------------------------------------------