• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

HOS-V4 Advance の開発リポジトリ


Commit MetaInfo

Revision9c641234368d4c5b8b4fa0b639b9f1799f3ed950 (tree)
Zeit2008-05-25 00:45:48
Autorryuz <ryuz>
Commiterryuz

Log Message

(none)

Ändern Zusammenfassung

Diff

--- a/kernel/source/arch/proc/arm/arm_v4t/gcc/kirq_hdr.S
+++ b/kernel/source/arch/proc/arm/arm_v4t/gcc/kirq_hdr.S
@@ -25,21 +25,19 @@
2525 .global _kernel_irq_hdr
2626 _kernel_irq_hdr:
2727 /* ---- レジスタ退避 */
28- mrs r13, cpsr /* cpsrをr13に退避 */
2928 msr cpsr_c, #(Mode_SYS | F_Bit | I_Bit) /* SYSモードに移行 */
3029 stmfd sp!, {r0-r3, r12, lr} /* SYSモードの汎用レジスタ退避 */
3130 msr cpsr_c, #(Mode_IRQ | F_Bit | I_Bit) /* IRQモードに移行 */
3231 mov r0, lr /* lr_irq 取り出し */
3332 mrs r1, spsr /* spsr_irq 取り出し */
34- mov r2, r13 /* cpsrを取り出し */
3533 msr cpsr_c, #(Mode_SYS | F_Bit | I_Bit) /* SYSモードに移行 */
3634 stmfd sp!, {r0, r1} /* lr_irq, spsr_irq退避 */
3735
3836 /* ---- 割込みマスク設定 */
3937 ldr r0, =_kernel_ictxcb
4038 ldr r3, [r0, #ICTXCB_IMSK] /* 古いimsk値を取り出し */
41- and r2, r2, #(F_Bit | I_Bit)
42- strb r2, [r0, #ICTXCB_IMSK] /* cpsr値をimsk値に設定 */
39+ orr r1, r3, #I_Bit /* 割込みマスク */
40+ strb r1, [r0, #ICTXCB_IMSK] /* cpsr値をimsk値に設定 */
4341
4442 /* ---- 多重割込み判定 */
4543 ldrb r1, [r0, #ICTXCB_INTCNT] /* 割り込みネストカウンタ値取得 */
@@ -68,23 +66,20 @@ _kernel_irq_hdr:
6866 strb r1, [r0, #ICTXCB_INTCNT] /* 割り込みネストカウンタ値設定 */
6967
7068 /* ---- 割込みマスク値復帰処理 */
71- ldr r1, [sp, #4] /* spsr_irq 値取り出し */
72- and r1, r1, #(F_Bit | I_Bit)
73- cmp r1, r3 /* 旧imsk値と比較 */
74- bne return_int /* 不一致なら終了処理スキップ */
7569 strb r3, [r0, #ICTXCB_IMSK] /* マスク値復帰 */
76-
70+
7771 /* ---- 割込み終了処理 */
7872 bl _kernel_end_inh /* 割り込み終了処理 */
79-
73+
74+ /* ---- 復帰先割込みマスク設定 */
8075 ldr r0, =_kernel_ictxcb
8176 ldr r1, [sp, #4] /* spsr_irq 値取り出し */
82- ldrb r0, [r0, #ICTXCB_IMSK] /* この時点でのimsk値取り出し */
83- bic r1, r1, #(F_Bit | I_Bit)
84- and r0, r0, #(F_Bit | I_Bit)
85- orr r1, r1, r0
86- str r1, [sp, #4] /* spsr_irq にimsk値反映 */
87-
77+ tst r1, #I_Bit /* 割禁と同時にIRQが入る場合があるのでケア */
78+ ldreqb r0, [r0, #ICTXCB_IMSK] /* この時点でのimsk値取り出し */
79+ biceq r1, r1, #(F_Bit | I_Bit)
80+ orreq r1, r1, r0
81+ streq r1, [sp, #4] /* spsr_irq にimsk値反映 */
82+
8883 return_int:
8984 /* ---- 復帰処理 */
9085 ldmfd sp!, {r0, r1} /* lr_irq, spsr_irq 復帰 */
@@ -95,8 +90,8 @@ return_int:
9590 ldmfd sp!, {r0-r3, r12, lr} /* SYSモードの汎用レジスタ復帰 */
9691 msr cpsr_c, #(Mode_IRQ | F_Bit | I_Bit) /* IRQモードに移行 */
9792 subs pc, lr, #4 /* 割込み復帰 */
98-
99-
93+
94+
10095 /* ---- 多重割り込み処理 */
10196 multiple_int:
10297 /* ---- スタックを8バイトアライメントに移動 */
--- a/test/twai_sem/lpc2000/gcc/gmake.mak
+++ b/test/twai_sem/lpc2000/gcc/gmake.mak
@@ -65,9 +65,9 @@ SRC_DIRS += . ..
6565
6666
6767 # %jp{オプションフラグ}%en{option flags}
68-AFLAGS = -mcpu=arm7tdmi -mthumb-interwork -gdwarf-2
69-CFLAGS = -mcpu=arm7tdmi -mthumb-interwork -gdwarf-2
70-LNFLAGS = -mcpu=arm7tdmi -mthumb-interwork -gdwarf-2 -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
68+AFLAGS = -mcpu=arm7tdmi -mthumb-interwork
69+CFLAGS = -mcpu=arm7tdmi -mthumb-interwork
70+LNFLAGS = -mcpu=arm7tdmi -mthumb-interwork -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
7171
7272
7373 # %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}