⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys_support.s

📁 嵌入式系统开发 TOPPERS and JSP Kernel Release 1.3 TOPPERS = Toyohashi Open Platform for Embedded Real-Tim
💻 S
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000,2001 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *  *  惧淡螟侯涪荚は·Free Software Foundation によって给山されている  *  GNU General Public License の Version 2 に淡揭されている掘凤か·笆 *  布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ *  アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ *      ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 *      に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· *      この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 *      み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ *    (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 *        涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する *        ことˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚を倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· *  塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ *  ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい *  かなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: sys_support.S,v 1.5 2002/04/05 07:43:51 honda Exp $ */#define _MACRO_ONLY#include "jsp_kernel.h"#include "evaluator7t.h"        /* *  你レベルのタ〖ゲットシステム巴赂の介袋步 * *  スタ〖トアップモジュ〖ルの面で·メモリ介袋步の涟に钙び叫されるˉ           */       #define SYSCFG 0x03ff0000                        #define INTOFFSET   0x03ff0000+0x4024#define INTPND      0x03ff0000+0x4004#define INTMASK     0x03ff0000+0x4008        #define LEDDATA     0x03ff0000+0x5008                .text        .align 2        .global hardware_init_hookhardware_init_hook:         ldr  r2, syscfg_k /* キャッシュON */        ldr  r1, [r2,#0]        bic  r1, r1,#0x32        orr  r1, r1,#0x12        str  r1, [r2,#0]        mov  pc, lr        .align 2syscfg_k:               .long SYSCFG/* * *  充哈みの叫掐り庚借妄 *          */                .text        .align 4	        .global IRQ_HandlerIRQ_Handler:        ldr   sp,   .int_stack        sub   lr,lr,#4        /*         *    办箕弄にint_stackに略闰         */        stmfd sp!, {r0 - r3,lr}        /*         *  充り哈み妥傍の冉年·システムモ〖ドになると粕めない         *  (KS32C50100巴赂)         */        ldr   r0,  intoffset_k         ldr   r1,  [r0]               /*         * システムモ〖ド スタックを掐れ仑えるため充り哈みは敦贿        * コンテキストをタスクスタックに姥み木すˉ        */        mrs   r0, spsr        mov   r3, sp        mov   r2,#(CPSR_SYS|CPSR_FIQ_BIT|CPSR_IRQ_BIT)        msr   cpsr,r2        ldr   r2,[r3,#0x10]     /* load  PC         */        stmfd sp!,{r2}          /* Store PC         */        ldr   r2,[r3,#0x0C]     /* load  r3         */                        stmfd sp!,{r2,ip,lr}    /* Store r3,ip,lr   */        ldmfd r3!,{r2,ip,lr}	/* load  r0,r1,r2   */        stmfd sp!,{r0,r2,ip,lr} /* Store SPSR,r0,r1,r2 */        /*         *  驴脚充り哈みか冉年         */        ldr  r2, .interrupt_count        ldr  r3, [r2]        add  r0,r3,#1        str  r0, [r2]        cmp  r3, #0x00        moveq   r2,sp            /* ネスト充り哈みでない眷圭 */        ldreq   sp,stack         /* スタックの恃构    */        stmeqfd sp!,{r2}         /* タスクスタックの瘦赂 */                ldr   r2,  int_table_k /* 充哈み悼击テ〖ブルの粕み叫し  */        ldr   r0,  [r2,r1]                    mov   r2,r1,lsr #2        mov   r1,#1        mov   r3,r1,lsl r2        ldr   r1,intpnd_k      /* ペンディングビットのクリア */        str   r3,[r1]         stmfd sp!,{r3}         /* マスクビットを瘦赂 */        ldr   r2,.int_mask     /* 票じ充り哈みのネストを松ぐため */        ldr   r1,[r2]          /* マスクする                     */        orr   r1,r1,r3        str   r1,[r2]                      /* 充り哈み钓材 */                        mov   r2,#CPSR_SYS             msr   cpsr,r2        /* Call Handler  */                mov   lr,  pc           mov   pc,  r0                        mov   r2,#(CPSR_SYS|CPSR_FIQ_BIT|CPSR_IRQ_BIT) /* 充り哈み敦贿 */        msr   cpsr,r2                ldmfd sp!,{r3}         /* ペンディングビットの牲耽 */        ldr   r2,.int_mask     /* 充り哈み钓材             */        ldr   r1,[r2]        bic   r1,r1,r3        str   r1,[r2]                        /* interrupt_count デクリメント */        ldr   r2,.interrupt_count        ldr   r1, [r2]                sub   r3,r1,#1                                str   r3, [r2]        cmp   r3,#0x00                bne   return_to_task_irq                /* タスクスタックの牲耽 */        ldmfd sp!,{r0}                 mov   sp, r0                                ldr   r1, reqflg_k    /* Check reqflg */        ldr   r0,[r1]        cmp   r0,#0        beq   return_to_task_irq        mov   r0,#0        str   r0,[r1]         /* Clear reqflg */        b     ret_intreturn_to_task_irq:        /*         *  牲耽借妄         *  充り哈み钓材となるがタスクコンテキスト惧に瘦赂しているため·         *  啼玛はない         */        ldmfd sp!,{r1}           /* CPSRの牲耽借妄 */        msr   cpsr, r1           /* 充り哈み钓材   */        ldmfd sp!,{r0-r3,ip,lr,pc}                .align 4.int_stack:        .long int_stack + 6 * 4        intoffset_k:            .long     INTOFFSETint_table_k:        .long     int_table            reqflg_k:        .long     reqflgintpnd_k:               .long INTPNDstack:        .long   STACKTOP.interrupt_count:               .long   interrupt_count.int_mask:                      .long   INTMASK       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -