Merge pull request #845 from caogos/master
[BSP] Add FPU option for loongson1c.
This commit is contained in:
commit
0d193254f8
|
@ -51,9 +51,9 @@ void rtthread_startup(void)
|
||||||
rt_hw_interrupt_init();
|
rt_hw_interrupt_init();
|
||||||
|
|
||||||
/* copy vector */
|
/* copy vector */
|
||||||
rt_memcpy((void *)A_K0BASE, tlb_refill_exception, 0x20);
|
rt_memcpy((void *)A_K0BASE, tlb_refill_exception, 0x80);
|
||||||
rt_memcpy((void *)(A_K0BASE + 0x180), general_exception, 0x20);
|
rt_memcpy((void *)(A_K0BASE + 0x180), general_exception, 0x80);
|
||||||
rt_memcpy((void *)(A_K0BASE + 0x200), irq_exception, 0x20);
|
rt_memcpy((void *)(A_K0BASE + 0x200), irq_exception, 0x80);
|
||||||
|
|
||||||
invalidate_writeback_dcache_all();
|
invalidate_writeback_dcache_all();
|
||||||
invalidate_icache_all();
|
invalidate_icache_all();
|
||||||
|
|
|
@ -94,8 +94,10 @@ void rt_hw_board_init(void)
|
||||||
/* init operating system timer */
|
/* init operating system timer */
|
||||||
rt_hw_timer_init();
|
rt_hw_timer_init();
|
||||||
|
|
||||||
|
#ifdef RT_USING_FPU
|
||||||
/* init hardware fpu */
|
/* init hardware fpu */
|
||||||
rt_hw_fpu_init();
|
rt_hw_fpu_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
rt_kprintf("current sr: 0x%08x\n", read_c0_status());
|
rt_kprintf("current sr: 0x%08x\n", read_c0_status());
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,8 @@
|
||||||
#define RT_UART_RX_BUFFER_SIZE 64
|
#define RT_UART_RX_BUFFER_SIZE 64
|
||||||
// </section>
|
// </section>
|
||||||
|
|
||||||
|
#define RT_USING_FPU
|
||||||
|
|
||||||
// <section name="RT_USING_CONSOLE" description="Using console" default="true" >
|
// <section name="RT_USING_CONSOLE" description="Using console" default="true" >
|
||||||
#define RT_USING_CONSOLE
|
#define RT_USING_CONSOLE
|
||||||
// <integer name="RT_CONSOLEBUF_SIZE" description="The buffer size for console output" default="128" />
|
// <integer name="RT_CONSOLEBUF_SIZE" description="The buffer size for console output" default="128" />
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
.macro SAVE_FPU
|
.macro SAVE_FPU
|
||||||
.set push
|
.set push
|
||||||
.set noreorder
|
.set noreorder
|
||||||
|
#ifdef RT_USING_FPU
|
||||||
move k1, sp /* 保存现场 */
|
move k1, sp /* 保存现场 */
|
||||||
and k0, k1, 0xFFFFFFF8 /* 8字节对齐 */
|
and k0, k1, 0xFFFFFFF8 /* 8字节对齐 */
|
||||||
PTR_SUBU sp, k0, PT_FPU_SIZE /* 计算栈底 */
|
PTR_SUBU sp, k0, PT_FPU_SIZE /* 计算栈底 */
|
||||||
|
@ -57,6 +58,7 @@
|
||||||
s.d $f28, PT_FPU_R28(sp)
|
s.d $f28, PT_FPU_R28(sp)
|
||||||
s.d $f30, PT_FPU_R30(sp)
|
s.d $f30, PT_FPU_R30(sp)
|
||||||
move sp, k1 /* 恢复现场 */
|
move sp, k1 /* 恢复现场 */
|
||||||
|
#endif
|
||||||
.set reorder
|
.set reorder
|
||||||
.set pop
|
.set pop
|
||||||
.endm
|
.endm
|
||||||
|
@ -65,6 +67,7 @@
|
||||||
.macro RESTORE_FPU
|
.macro RESTORE_FPU
|
||||||
.set push
|
.set push
|
||||||
.set noreorder
|
.set noreorder
|
||||||
|
#ifdef RT_USING_FPU
|
||||||
move k1, sp /* 保存现场 */
|
move k1, sp /* 保存现场 */
|
||||||
and k0, k1, 0xFFFFFFF8 /* 8字节对齐 */
|
and k0, k1, 0xFFFFFFF8 /* 8字节对齐 */
|
||||||
PTR_SUBU sp, k0, PT_FPU_SIZE /* 计算栈底*/
|
PTR_SUBU sp, k0, PT_FPU_SIZE /* 计算栈底*/
|
||||||
|
@ -85,6 +88,7 @@
|
||||||
l.d $f28, PT_FPU_R28(sp)
|
l.d $f28, PT_FPU_R28(sp)
|
||||||
l.d $f30, PT_FPU_R30(sp)
|
l.d $f30, PT_FPU_R30(sp)
|
||||||
move sp, k1 /* 恢复现场 */
|
move sp, k1 /* 恢复现场 */
|
||||||
|
#endif
|
||||||
.set reorder
|
.set reorder
|
||||||
.set pop
|
.set pop
|
||||||
.endm
|
.endm
|
||||||
|
|
Loading…
Reference in New Issue