bss初期化忘れ
gccを使う場合にbssを初期化せずに使うと言う愚を犯していました。いちおう動作を確認したコードをcvsに置こうとしたのですが、ブランチがどうのとエラーが出て置けません。明日だな。
いちおう、記録。bf533/bfelf.ldの変更箇所(71行目より)
.bss : { __bss_start = . ; *(.bss) *(COMMON) __bss_end = . ; } > MEM_DATA_B
startup.Sの83行目に追加
.extern __bss_start, __bss_end;
startup.Sの109行目に追加
#ifdef __GNUC__ // bss領域の初期化 LOADLABEL( r0, __bss_start) // bss開始番地 LOADLABEL( r1, __bss_end ) r2 = r1 - r0; // bssのサイズ p0 = r0; // 開始アドレス p2 = r2; r0 = 0; loop bssfill lc0 = p2; loop_begin bssfill b[p0++] = r0; loop_end bssfill; #elif defined(__ECC__) #else #error "Compiler is not supported" #endif