[startup_picpid.c]
// マニュアル 7.3.2(5)セクションの初期化処理
#pragma section C C$DSEC //セクション名をC$DSEC にします
const struct {
void *rom_s; //初期化データセクションのROM 上の先頭アドレスメンバ
void *rom_e; //初期化データセクションのROM 上の最終アドレスメンバ
void *ram_s; //初期化データセクションのRAM 上の先頭アドレスメンバ
} DTBL[] = {__sectop("D"), __secend("D"), __sectop("R")};
#pragma section C C$BSEC //セクション名をC$BSEC にします
const struct {
void *b_s; //未初期化データセクションの先頭アドレスメンバ
void *b_e; //未初期化データセクションの最終アドレスメンバ
} BTBL[] = {__sectop("B"), __secend("B")};
extern void main(void);
extern void _INITLIB(void); // マニュアル 7.3.2(6) ライブラリの初期化処理
#pragma entry application_pic_entry
void application_pic_entry(void)
{
_INITSCT_PICPID();
_INITLIB();
main();
}
[initsct_pid.src]
; PID対応 セクション初期化ルーチン
.glb __INITSCT_PICPID
.glb __PID_TOP
.section C$BSEC,ROMDATA,ALIGN=4
.section C$DSEC,ROMDATA,ALIGN=4
.section P,CODE
__INITSCT_PICPID: ; function: _INITSCT
.STACK __INITSCT_PICPID=28
PUSHM R1-R6
ADD #-__PID_TOP,__PID_REG,R6 ; How long distance PID moves
;;;
;;; clear BBS(B)
;;;
ADD #TOPOF C$BSEC, R6, R4
ADD #SIZEOF C$BSEC, R4, R5
MOV.L #0, R2
BRA next_loop1
|