#---------------------------------------------------------------------------- # Project: TwlIPL # File: hyena.lsf # # Copyright 2007 Nintendo. All rights reserved. # # These coded insructions, statements, and computer programs contain # proprietary information of Nintendo of America Inc. and/or Nintendo # Company Ltd., and are protected by Federal copyright law. They may # not be disclosed to third parties or copied or duplicated in any form, # in whole or in part, without the prior written consent of Nintendo. # # $Date:: $ # $Rev$ # $Author$ #---------------------------------------------------------------------------- # # Nitro LCF SPEC FILE # #-------- Static $(TARGET_NAME) { Address $(ADDRESS_FLXMAIN) Library $(CRT0_O) Object $(OBJDIR)/initScfg.o StackSize 1024 1024 } #-------- Autoload WRAM { Address $(ADDRESS_LTDWRAM) Library libsubpsyscall.a \ libsyscall_sp.twl.a \ $(CW_LIBS) \ libos_sp$(LIBSUFFIX).a \ libmi_sp$(LIBSUFFIX).a \ libpad_sp$(LIBSUFFIX).a \ libpxi_sp$(LIBSUFFIX).a \ libstd_sp$(LIBSUFFIX).a \ libexi_sp$(LIBSUFFIX).a \ libsnd_sp$(LIBSUFFIX).a \ libspi_sp$(LIBSUFFIX).a \ libpm_sp.SYSMENU$(LIBSUFFIX).a \ libmath_sp$(LIBSUFFIX).a \ libscfg_sp$(LIBSUFFIX).a \ libtp_sp$(LIBSUFFIX).a \ libmic_sp$(LIBSUFFIX).a \ libfs_sp$(LIBSUFFIX).a \ libcard_sp$(LIBSUFFIX).a \ libi2c_sp$(LIBSUFFIX).a \ libcamera_sp$(LIBSUFFIX).a \ libcdc_sp$(LIBSUFFIX).a \ libsndex_sp$(LIBSUFFIX).a \ libtpex_sp$(LIBSUFFIX).a \ libmicex_sp$(LIBSUFFIX).a \ libmcu_sp$(LIBSUFFIX).a \ Library libsdio_sp$(LIBSUFFIX).a Library libnvram_sp$(LIBSUFFIX).a Library librtc_sp$(LIBSUFFIX).a Object * (.etable) Object * (.wram) Object * (.ltdwram) Object $(OBJDIR)/main.o # caches in fatfs library, that should be on WRAM. # 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、 # 変数定義箇所に pragma で .ltdwram セクションに含まれるように暫定対策しました。 # Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss) ##### # Sub-routines in WL library , that should be on WRAM. # in TaskMan.o Object OBJECT( MainTaskRoutine , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( AddTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( DeleteTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( LowestIdleTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( ExecuteMessage , libwl_sp$(LIBSUFFIX).a ) (.text) # in BufMan.o Object OBJECT( NewHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( DeleteHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( AllocateHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( ReleaseHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( MoveHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( AddHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( GetHeapBufNextAdrs , libwl_sp$(LIBSUFFIX).a ) (.text) # in WlCmdIf.o Object OBJECT( RequestCmdTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( SendMessageToWmDirect , libwl_sp$(LIBSUFFIX).a ) (.text) # in WlNic.o Object OBJECT( WStart , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WStop , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WSetStaState , libwl_sp$(LIBSUFFIX).a ) (.text) # in WlIntr.o Object OBJECT( WlIntr , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrPreTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrActEnd , libwl_sp$(LIBSUFFIX).a ) (.text) # Object OBJECT( WlIntrAckCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrTxErr , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrRxCntup , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrRxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrMpEnd , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrStartTx , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrStartRx , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( SetParentTbttTxq , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( MacBugTxMp , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( AdjustRingPointer , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( CheckKeyTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) # in WlIntrTask.o Object OBJECT( WlIntrTxBeaconTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrTxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrRxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WlIntrMpEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( SetParentTbttTxqTask , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( TakeoutRxFrame , libwl_sp$(LIBSUFFIX).a ) (.text) # in TxCtrl.o Object OBJECT( InitTxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) # in RxCtrl.o Object OBJECT( InitRxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) # in WaitLoop.o Object OBJECT( WaitLoop_Rxpe , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WaitLoop_Waitus , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WaitLoop_ClrAid , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text) ##### # Sub-routines in TWL WIRELESS Driver , that should be on WRAM. Object OBJECT( BMILZData, libathdrv_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( bmiBufferSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( BMIWriteMemory, libathdrv_sp$(LIBSUFFIX).a ) (.text) Library libboot_sp$(LIBSUFFIX).a \ libreboot_sp$(LIBSUFFIX).a \ libhotsw_sp$(LIBSUFFIX).a \ libreloc_info_sp$(LIBSUFFIX).a \ libsysmenu_sp$(LIBSUFFIX).a \ libsysmmcu_sp$(LIBSUFFIX).a \ libds_sp$(LIBSUFFIX).a \ libaes_sp$(FIRM_LIBSUFFIX).a \ libsea_sp$(LIBSUFFIX).a \ libcrypto_sp$(LIBSUFFIX).a # FATFS core symbols Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs #RTFS Object OBJECT(FATFSi_rtfs_memset, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x18 BYTEs Object OBJECT(FATFSi_faxx_check_free_space, libfatfs_sp$(LIBSUFFIX).a) (.text) # 108 BYTEs Object OBJECT(fat32_check_freespace, libfatfs_sp$(LIBSUFFIX).a) (.text) # 216 BYTEs Object OBJECT(fat16_check_freespace, libfatfs_sp$(LIBSUFFIX).a) (.text) # 216 BYTEs #Driver Object OBJECT(SDCARDi_CpuReadFifoAes, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x70 BYTEs Object OBJECT(SDCARDi_DmaReadFifoAes, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x64 BYTEs Object OBJECT(SDCARDi_CpuWriteFifoAes, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x94 BYTEs Object OBJECT(SDCARDi_DmaWriteFifoAes, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x88 BYTEs Object OBJECT(SYSFPGA_irq, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x17C BYTEs Object OBJECT(SDCARDi_CpuRecvFast, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x40 BYTEs Object OBJECT(SDCARDi_CpuSendFast, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x40 BYTEs Object OBJECT(SD_OrFPGA, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x34 BYTEs Object OBJECT(SD_AndFPGA, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x34 BYTEs Object OBJECT(SD_SetFPGA, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x2C BYTEs Object OBJECT(SD_GetFPGA, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x30 BYTEs Object OBJECT(SD_CheckFPGAReg, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x10 BYTEs Object OBJECT(NDMA_irq_Handler, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x54 BYTEs Object OBJECT(SDCARD_irq_Handler, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0xD8 BYTEs Object OBJECT(SDCARDi_ReadCore, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x194 BYTEs Object OBJECT(SDCARDi_WriteCore, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x34C BYTEs Object OBJECT(SDCARD_TimerStart, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x64 BYTEs Object OBJECT(SDCARD_TimerStop, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x30 BYTEs Object OBJECT(SDCARDi_Access, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x12C BYTEs Object OBJECT(SD_Command, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0xF0 BYTEs Object OBJECT(SD_SendStatus, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x40 BYTEs Object OBJECT(SD_MultiReadBlock, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x7C BYTEs Object OBJECT(SD_MultiWriteBlock, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x7C BYTEs Object OBJECT(SD_TransCommand, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0xA8 BYTEs Object OBJECT(SD_TransReadyFPGA, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x8C BYTEs Object OBJECT(SD_TransEndFPGA, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x78 BYTEs Object OBJECT(SD_CheckStatus, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0xC0 BYTEs Object OBJECT(SD_EnableClock, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x18 BYTEs Object OBJECT(SD_DisableClock, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x1C BYTEs Object OBJECT(SD_EnableSeccnt, libfatfs_sp$(LIBSUFFIX).a) (.text) # 0x34 BYTEs Object * (.rsvwram) } #-------- Ltdautoload LTDMAIN { After $(TARGET_NAME) Object * (.ltdmain) Library libwm_sp$(LIBSUFFIX).a \ libnwm_sp.SYSMENU$(LIBSUFFIX).a \ libwvr_sp$(LIBSUFFIX).a \ libwl_sp$(LIBSUFFIX).a Library libwpa_sp$(LIBSUFFIX).a Library libathdrv_sp$(LIBSUFFIX).a Library libfatfs_sp$(LIBSUFFIX).a \ libdht_sp$(LIBSUFFIX).a \ $(USE_CRYPTO_LIBS) Library $(ISDBG_LIBS_TWL) Library $(ISDBG_LIBS_NITRO) } # BootROMの鍵データが0x0380c400〜にあるので、hyenaのWRAM配置の上限はその値になることに注意。