asmstartup.s
来自「使用广泛的日本著名的开源嵌入式实时操作系统T-Kernel的源码」· S 代码 · 共 63 行
S
63 行
/* *---------------------------------------------------------------------- * T-Kernel * * Copyright (C) 2004-2006 by Ken Sakamura. All rights reserved. * T-Kernel is distributed under the T-License. *---------------------------------------------------------------------- * * Version: 1.02.02 * Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/9. * *---------------------------------------------------------------------- *//* * @(#)asmstartup.S (crttk) * * Driver/manager startup */#include <machine.h>#include <tk/asm.h> .text .balign 4 .globl Csym(_C_startup) .type Csym(_C_startup), %functionCsym(_C_startup): bltz $a0, l_noinit // Initialization sequence is performed only when ac >= 0 lui $t0, %hi(__data_org) // When data area does not need to be moved, addiu $t0, $t0, %lo(__data_org) lui $t1, %hi(__data_start) // OS loads addiu $t1, $t1, %lo(__data_start) beq $t0, $t1, l_noinit lui $t2, %hi(_edata) // initialize data area addiu $t2, $t2, %lo(_edata) dsubu $t3, $t2, $t1 blez $t3, nocopy_data copy_data: lw $t4, 0($t0) daddu $t0, $t0, 4 sw $t4, 0($t1) daddu $t1, $t1, 4 dsubu $t3, $t2, $t1 bgtz $t3, copy_data nocopy_data: lui $t0, %hi(__bss_start) // clear bss area addiu $t0, $t0, %lo(__bss_start) lui $t1, %hi(_end) addiu $t1, $t1, %lo(_end) dsubu $t2, $t1, $t0 blez $t2, nobss clrbss: sw $zero, 0($t0) daddu $t0, $t0, 4 bne $t0, $t1, clrbss nobss: l_noinit: j Csym(_P_startup)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?