diff --git a/c/src/lib/libbsp/arm/nds/ChangeLog b/c/src/lib/libbsp/arm/nds/ChangeLog index f432d8c737..0f6763a04b 100644 --- a/c/src/lib/libbsp/arm/nds/ChangeLog +++ b/c/src/lib/libbsp/arm/nds/ChangeLog @@ -1,3 +1,20 @@ +2008-04-17 Joel Sherrill + + * Makefile.am: Move .s files to .S + * dswifi/common/source/spinlock.S, libfat/source/disc_io/io_dldi.S, + libfat/source/disc_io/io_scsd_s.S, libnds/source/arm9/COS.S, + libnds/source/arm9/SIN.S, libnds/source/arm9/TAN.S, + libnds/source/arm9/dcache.S, libnds/source/arm9/default_font.S, + libnds/source/arm9/icache.S, libnds/source/common/biosCalls.S, + libnds/source/common/interruptDispatcher.S: New files. + * dswifi/common/source/spinlock.s, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_scsd_s.s, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.s, libnds/source/arm9/TAN.s, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.s, libnds/source/arm9/icache.s, + libnds/source/common/biosCalls.s, + libnds/source/common/interruptDispatcher.s: Removed. + 2008-04-17 Joel Sherrill * .cvsignore, include/.cvsignore: New files. diff --git a/c/src/lib/libbsp/arm/nds/Makefile.am b/c/src/lib/libbsp/arm/nds/Makefile.am index d129897f12..f72970282a 100644 --- a/c/src/lib/libbsp/arm/nds/Makefile.am +++ b/c/src/lib/libbsp/arm/nds/Makefile.am @@ -101,7 +101,7 @@ bin2s: $(srcdir)/tools/bin2s.c SUFFIXES = .bin -%.s: %.bin bin2s +%.S: %.bin bin2s $(srcdir)/tools/bin2s $< > $(srcdir)/$@ libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \ @@ -110,9 +110,9 @@ libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \ libnds/source/common/interruptDispatcher.S \ libnds/source/common/interrupts.c \ libnds/source/arm9/boxtest.c \ - libnds/source/arm9/default_font.s \ + libnds/source/arm9/default_font.S \ libnds/source/arm9/console.c \ - libnds/source/arm9/COS.s \ + libnds/source/arm9/COS.S \ libnds/source/arm9/dcache.S \ libnds/source/arm9/exceptionHandler.S \ libnds/source/arm9/exceptions.c \ @@ -124,10 +124,10 @@ libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \ libnds/source/arm9/ndsmotion.c \ libnds/source/arm9/pcx.c \ libnds/source/arm9/rumble.c \ - libnds/source/arm9/SIN.s \ + libnds/source/arm9/SIN.S \ libnds/source/arm9/sound.c \ libnds/source/arm9/system.c \ - libnds/source/arm9/TAN.s \ + libnds/source/arm9/TAN.S \ libnds/source/arm9/touch.c \ libnds/source/arm9/video.c \ libnds/source/arm9/videoGL.c @@ -139,7 +139,7 @@ if HAS_NETWORKING # dswifi, ARM9 side noinst_PROGRAMS += dswifi9.rel dswifi9_rel_SOURCES = dswifi/arm9/source/wifi_arm9.c \ - dswifi/common/source/spinlock.s + dswifi/common/source/spinlock.S dswifi9_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/dswifi/include -I$(srcdir)/libnds/include -I$(srcdir)/dswifi/common/source -I$(srcdir)/wifi -D_KERNEL -Dcaddr_t=uint32_t dswifi9_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) endif @@ -160,8 +160,8 @@ libdldi_rel_SOURCES = libfat/source/disc_io/disc.c \ libfat/source/disc_io/io_sc_common.c \ libfat/source/disc_io/io_scsd.c \ libfat/source/disc_io/io_sd_common.c \ - libfat/source/disc_io/io_dldi.s \ - libfat/source/disc_io/io_scsd_s.s + libfat/source/disc_io/io_dldi.S \ + libfat/source/disc_io/io_scsd_s.S libdldi_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include -I$(srcdir)/libfat/source/disc_io libdldi_rel_CCASFLAGS = $(AM_CCASFLAGS) -DARM9 -I$(srcdir)/libnds/include -I$(srcdir)/libfat/source/disc_io libdldi_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) @@ -188,7 +188,7 @@ if HAS_NETWORKING # dswifi, ARM7 side noinst_PROGRAMS += dswifi7.rel dswifi7_rel_SOURCES = dswifi/arm7/source/wifi_arm7.c \ - dswifi/common/source/spinlock.s + dswifi/common/source/spinlock.S dswifi7_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM7 -I$(srcdir)/dswifi/include -I$(srcdir)/libnds/include -I$(srcdir)/dswifi/common/source dswifi7_rel_CFLAGS = -mcpu=arm7tdmi -msoft-float dswifi7_rel_CCASFLAGS = -mcpu=arm7tdmi -msoft-float diff --git a/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.s b/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.s rename to c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.S diff --git a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.s b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.s rename to c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.S diff --git a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.s b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.s rename to c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.S diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s rename to c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s rename to c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s rename to c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S new file mode 100644 index 0000000000..1b3943164f --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S @@ -0,0 +1,245 @@ +/*--------------------------------------------------------------------------------- + $Id$ + + Copyright (C) 2005 + Michael Noland (joat) + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + $Log$ + Revision 1.1 2008/04/16 18:37:32 joel + 2008-04-16 Matthieu Bucchianeri + + * ChangeLog, Makefile.am, README, bsp_specs, configure.ac, + mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, + clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, + coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, + dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, + dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, + dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, + dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, + dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, + dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, + dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, + dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, + dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, + dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, + dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, + dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, + dswifi/arm9/source/sgIP_memblock.h, + dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, + dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, + dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, + dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, + dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, + dswifi/include/dswifi_version.h, dswifi/include/netdb.h, + dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, + fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, + include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, + libfat/gba/include/fat.h, libfat/include/fat.h, + libfat/nds/include/fat.h, libfat/source/bit_ops.h, + libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, + libfat/source/directory.c, libfat/source/directory.h, + libfat/source/fatdir.c, libfat/source/fatdir.h, + libfat/source/fatfile.c, libfat/source/fatfile.h, + libfat/source/file_allocation_table.c, + libfat/source/file_allocation_table.h, libfat/source/filetime.c, + libfat/source/filetime.h, libfat/source/libfat.c, + libfat/source/mem_allocate.h, libfat/source/partition.c, + libfat/source/partition.h, libfat/source/disc_io/disc.c, + libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, + libfat/source/disc_io/io_cf_common.c, + libfat/source/disc_io/io_cf_common.h, + libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, + libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, + libfat/source/disc_io/io_m3_common.c, + libfat/source/disc_io/io_m3_common.h, + libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, + libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, + libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, + libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, + libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, + libfat/source/disc_io/io_sc_common.c, + libfat/source/disc_io/io_sc_common.h, + libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, + libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, + libfat/source/disc_io/io_scsd_s.s, + libfat/source/disc_io/io_sd_common.c, + libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, + libnds/Makefile.arm9, libnds/libnds_license.txt, + libnds/basicARM7/source/defaultARM7.c, + libnds/include/default_font_bin.h, libnds/include/gbfs.h, + libnds/include/nds.h, libnds/include/nds/bios.h, + libnds/include/nds/card.h, libnds/include/nds/dma.h, + libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, + libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, + libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, + libnds/include/nds/system.h, libnds/include/nds/timers.h, + libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, + libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, + libnds/include/nds/arm9/background.h, + libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, + libnds/include/nds/arm9/console.h, + libnds/include/nds/arm9/exceptions.h, + libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, + libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, + libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, + libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, + libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, + libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, + libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, + libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, + libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, + libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, + libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, + libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, + libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.S, + libnds/source/arm9/exceptionHandler.s, + libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, + libnds/source/arm9/icache.s, libnds/source/arm9/image.c, + libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, + libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, + libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, + libnds/source/arm9/system.c, libnds/source/arm9/touch.c, + libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, + libnds/source/common/biosCalls.s, libnds/source/common/card.c, + libnds/source/common/gbfs.c, + libnds/source/common/interruptDispatcher.s, + libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, + sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, + timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, + tools/configure.ac, tools/runtest, + tools/ndstool/include/arm7_sha1_homebrew.h, + tools/ndstool/include/arm7_sha1_nintendo.h, + tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, + tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, + tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, + tools/ndstool/include/hook.h, tools/ndstool/include/little.h, + tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, + tools/ndstool/include/ndscreate.h, + tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, + tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, + tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, + tools/ndstool/include/passme_vhd1.h, + tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, + tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, + tools/ndstool/source/arm7_sha1_homebrew.c, + tools/ndstool/source/arm7_sha1_nintendo.c, + tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, + tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, + tools/ndstool/source/default_icon.c, + tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, + tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, + tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, + tools/ndstool/source/ndscreate.cpp, + tools/ndstool/source/ndsextract.cpp, + tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, + tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, + tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, + touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, + touchscreen/reco.h, touchscreen/touchscreen.c, + touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: + New files. + + Revision 1.1 2006/07/04 01:35:32 wntrmute + move cache.s to dcache.s + + Revision 1.5 2006/06/18 21:18:32 wntrmute + *** empty log message *** + + Revision 1.4 2005/08/23 17:06:10 wntrmute + converted all endings to unix + + Revision 1.3 2005/08/03 05:12:29 wntrmute + adjusted header for logging + +---------------------------------------------------------------------------------*/ +#define ICACHE_SIZE 0x2000 +#define DCACHE_SIZE 0x1000 +#define CACHE_LINE_SIZE 32 +//--------------------------------------------------------------------------------- + .arm +//--------------------------------------------------------------------------------- + .global DC_FlushAll +//--------------------------------------------------------------------------------- +DC_FlushAll: +/*--------------------------------------------------------------------------------- + Clean and invalidate entire data cache +---------------------------------------------------------------------------------*/ + mov r1, #0 +outer_loop: + mov r0, #0 +inner_loop: + orr r2, r1, r0 @ generate segment and line address + mcr p15, 0, r2, c7, c14, 2 @ clean and flush the line + add r0, r0, #CACHE_LINE_SIZE + cmp r0, #DCACHE_SIZE/4 + bne inner_loop + add r1, r1, #0x40000000 + cmp r1, #0 + bne outer_loop + bx lr + +//--------------------------------------------------------------------------------- + .global DC_FlushRange +//--------------------------------------------------------------------------------- +DC_FlushRange: +/*--------------------------------------------------------------------------------- + Clean and invalidate a range +---------------------------------------------------------------------------------*/ + add r1, r1, r0 + bic r0, r0, #(CACHE_LINE_SIZE - 1) +.flush: + mcr p15, 0, r0, c7, c14, 1 @ clean and flush address + add r0, r0, #CACHE_LINE_SIZE + cmp r0, r1 + blt .flush + bx lr + +//--------------------------------------------------------------------------------- + .global DC_InvalidateAll +//--------------------------------------------------------------------------------- +DC_InvalidateAll: +/*--------------------------------------------------------------------------------- + Clean and invalidate entire data cache +---------------------------------------------------------------------------------*/ + mov r0, #0 + mcr p15, 0, r0, c7, c6, 0 + bx lr + +//--------------------------------------------------------------------------------- + .global DC_InvalidateRange +//--------------------------------------------------------------------------------- +DC_InvalidateRange: +/*--------------------------------------------------------------------------------- + Invalidate a range +---------------------------------------------------------------------------------*/ + add r1, r1, r0 + bic r0, r0, #CACHE_LINE_SIZE - 1 +.invalidate: + mcr p15, 0, r0, c7, c6, 1 + add r0, r0, #CACHE_LINE_SIZE + cmp r0, r1 + blt .invalidate + bx lr diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s deleted file mode 100644 index 39c8519933..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s +++ /dev/null @@ -1,107 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Michael Noland (joat) - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.1 2006/07/04 01:35:32 wntrmute - move cache.s to dcache.s - - Revision 1.5 2006/06/18 21:18:32 wntrmute - *** empty log message *** - - Revision 1.4 2005/08/23 17:06:10 wntrmute - converted all endings to unix - - Revision 1.3 2005/08/03 05:12:29 wntrmute - adjusted header for logging - ----------------------------------------------------------------------------------*/ -#define ICACHE_SIZE 0x2000 -#define DCACHE_SIZE 0x1000 -#define CACHE_LINE_SIZE 32 -//--------------------------------------------------------------------------------- - .arm -//--------------------------------------------------------------------------------- - .global DC_FlushAll -//--------------------------------------------------------------------------------- -DC_FlushAll: -/*--------------------------------------------------------------------------------- - Clean and invalidate entire data cache ----------------------------------------------------------------------------------*/ - mov r1, #0 -outer_loop: - mov r0, #0 -inner_loop: - orr r2, r1, r0 @ generate segment and line address - mcr p15, 0, r2, c7, c14, 2 @ clean and flush the line - add r0, r0, #CACHE_LINE_SIZE - cmp r0, #DCACHE_SIZE/4 - bne inner_loop - add r1, r1, #0x40000000 - cmp r1, #0 - bne outer_loop - bx lr - -//--------------------------------------------------------------------------------- - .global DC_FlushRange -//--------------------------------------------------------------------------------- -DC_FlushRange: -/*--------------------------------------------------------------------------------- - Clean and invalidate a range ----------------------------------------------------------------------------------*/ - add r1, r1, r0 - bic r0, r0, #(CACHE_LINE_SIZE - 1) -.flush: - mcr p15, 0, r0, c7, c14, 1 @ clean and flush address - add r0, r0, #CACHE_LINE_SIZE - cmp r0, r1 - blt .flush - bx lr - -//--------------------------------------------------------------------------------- - .global DC_InvalidateAll -//--------------------------------------------------------------------------------- -DC_InvalidateAll: -/*--------------------------------------------------------------------------------- - Clean and invalidate entire data cache ----------------------------------------------------------------------------------*/ - mov r0, #0 - mcr p15, 0, r0, c7, c6, 0 - bx lr - -//--------------------------------------------------------------------------------- - .global DC_InvalidateRange -//--------------------------------------------------------------------------------- -DC_InvalidateRange: -/*--------------------------------------------------------------------------------- - Invalidate a range ----------------------------------------------------------------------------------*/ - add r1, r1, r0 - bic r0, r0, #CACHE_LINE_SIZE - 1 -.invalidate: - mcr p15, 0, r0, c7, c6, 1 - add r0, r0, #CACHE_LINE_SIZE - cmp r0, r1 - blt .invalidate - bx lr diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.s rename to c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.S diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s deleted file mode 100644 index 7397dcfcac..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s +++ /dev/null @@ -1,123 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.3 2006/08/03 09:35:36 wntrmute - fix storing pc - - Revision 1.2 2006/07/06 02:14:33 wntrmute - read r15 in enterException - add return to bios - - Revision 1.1 2006/06/18 21:16:26 wntrmute - added arm9 exception handler API - - ----------------------------------------------------------------------------------*/ - .text - - .arm - -@--------------------------------------------------------------------------------- - .global getCPSR -@--------------------------------------------------------------------------------- -getCPSR: -@--------------------------------------------------------------------------------- - mrs r0,cpsr - bx r14 - -@--------------------------------------------------------------------------------- - .global enterException -@--------------------------------------------------------------------------------- -enterException: -@--------------------------------------------------------------------------------- - // store context - ldr r12,=exceptionRegisters - stmia r12,{r0-r11} - str r13,[r12,#oldStack - exceptionRegisters] - // assign a stack - ldr r13,=exceptionStack - ldr r13,[r13] - - // renable MPU - mrc p15,0,r0,c1,c0,0 - orr r0,r0,#1 - mcr p15,0,r0,c1,c0,0 - - // bios exception stack - ldr r0, =0x027FFD90 - - // grab r15 from bios exception stack - ldr r2,[r0,#8] - str r2,[r12,#reg15 - exceptionRegisters] - - // grab stored r12 and SPSR from bios exception stack - ldmia r0,{r2,r12} - - - // grab banked registers from correct processor mode - mrs r3,cpsr - bic r4,r3,#0x1F - and r2,r2,#0x1F - orr r4,r4,r2 - msr cpsr,r4 - ldr r0,=reg12 - stmia r0,{r12-r14} - msr cpsr,r3 - - // Get C function & call it - ldr r12,=exceptionC - ldr r12,[r12,#0] - blxne r12 - - // restore registers - ldr r12,=exceptionRegisters - ldmia r12,{r0-r11} - ldr r13,[r12,#oldStack - exceptionRegisters] - - // return through bios - mov pc,lr - -@--------------------------------------------------------------------------------- - .global exceptionC -@--------------------------------------------------------------------------------- -exceptionC: -@--------------------------------------------------------------------------------- - .word 0x00000000 -@--------------------------------------------------------------------------------- - .global exceptionStack -@--------------------------------------------------------------------------------- -exceptionStack: -@--------------------------------------------------------------------------------- - .word 0x00000000 -@--------------------------------------------------------------------------------- - .global exceptionRegisters -@--------------------------------------------------------------------------------- -exceptionRegisters: -@--------------------------------------------------------------------------------- - .space 12 * 4 -reg12: .word 0 -reg13: .word 0 -reg14: .word 0 -reg15: .word 0 -oldStack: .word 0 diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.S similarity index 100% rename from c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.s rename to c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.S diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s b/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S similarity index 60% rename from c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s rename to c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S index a59debef6c..5f23c83713 100644 --- a/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s +++ b/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S @@ -24,6 +24,144 @@ distribution. $Log$ + Revision 1.1 2008/04/16 18:37:32 joel + 2008-04-16 Matthieu Bucchianeri + + * ChangeLog, Makefile.am, README, bsp_specs, configure.ac, + mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, + clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, + coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, + dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, + dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, + dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, + dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, + dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, + dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, + dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, + dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, + dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, + dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, + dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, + dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, + dswifi/arm9/source/sgIP_memblock.h, + dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, + dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, + dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, + dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, + dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, + dswifi/include/dswifi_version.h, dswifi/include/netdb.h, + dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, + fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, + include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, + libfat/gba/include/fat.h, libfat/include/fat.h, + libfat/nds/include/fat.h, libfat/source/bit_ops.h, + libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, + libfat/source/directory.c, libfat/source/directory.h, + libfat/source/fatdir.c, libfat/source/fatdir.h, + libfat/source/fatfile.c, libfat/source/fatfile.h, + libfat/source/file_allocation_table.c, + libfat/source/file_allocation_table.h, libfat/source/filetime.c, + libfat/source/filetime.h, libfat/source/libfat.c, + libfat/source/mem_allocate.h, libfat/source/partition.c, + libfat/source/partition.h, libfat/source/disc_io/disc.c, + libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, + libfat/source/disc_io/io_cf_common.c, + libfat/source/disc_io/io_cf_common.h, + libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, + libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, + libfat/source/disc_io/io_m3_common.c, + libfat/source/disc_io/io_m3_common.h, + libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, + libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, + libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, + libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, + libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, + libfat/source/disc_io/io_sc_common.c, + libfat/source/disc_io/io_sc_common.h, + libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, + libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, + libfat/source/disc_io/io_scsd_s.s, + libfat/source/disc_io/io_sd_common.c, + libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, + libnds/Makefile.arm9, libnds/libnds_license.txt, + libnds/basicARM7/source/defaultARM7.c, + libnds/include/default_font_bin.h, libnds/include/gbfs.h, + libnds/include/nds.h, libnds/include/nds/bios.h, + libnds/include/nds/card.h, libnds/include/nds/dma.h, + libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, + libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, + libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, + libnds/include/nds/system.h, libnds/include/nds/timers.h, + libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, + libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, + libnds/include/nds/arm9/background.h, + libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, + libnds/include/nds/arm9/console.h, + libnds/include/nds/arm9/exceptions.h, + libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, + libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, + libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, + libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, + libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, + libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, + libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, + libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, + libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, + libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, + libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, + libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, + libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.S, + libnds/source/arm9/exceptionHandler.s, + libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, + libnds/source/arm9/icache.s, libnds/source/arm9/image.c, + libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, + libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, + libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, + libnds/source/arm9/system.c, libnds/source/arm9/touch.c, + libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, + libnds/source/common/biosCalls.s, libnds/source/common/card.c, + libnds/source/common/gbfs.c, + libnds/source/common/interruptDispatcher.s, + libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, + sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, + timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, + tools/configure.ac, tools/runtest, + tools/ndstool/include/arm7_sha1_homebrew.h, + tools/ndstool/include/arm7_sha1_nintendo.h, + tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, + tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, + tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, + tools/ndstool/include/hook.h, tools/ndstool/include/little.h, + tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, + tools/ndstool/include/ndscreate.h, + tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, + tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, + tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, + tools/ndstool/include/passme_vhd1.h, + tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, + tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, + tools/ndstool/source/arm7_sha1_homebrew.c, + tools/ndstool/source/arm7_sha1_nintendo.c, + tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, + tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, + tools/ndstool/source/default_icon.c, + tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, + tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, + tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, + tools/ndstool/source/ndscreate.cpp, + tools/ndstool/source/ndsextract.cpp, + tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, + tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, + tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, + touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, + touchscreen/reco.h, touchscreen/touchscreen.c, + touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: + New files. + Revision 1.5 2006/03/15 12:37:14 wntrmute reformatted for legibility grouped arm7 and arm9 specific code diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S new file mode 100644 index 0000000000..4ef656f132 --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S @@ -0,0 +1,290 @@ +/*--------------------------------------------------------------------------------- + $Id$ + + Copyright (C) 2005 + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + $Log$ + Revision 1.1 2008/04/16 18:37:33 joel + 2008-04-16 Matthieu Bucchianeri + + * ChangeLog, Makefile.am, README, bsp_specs, configure.ac, + mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, + clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, + coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, + dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, + dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, + dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, + dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, + dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, + dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, + dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, + dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, + dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, + dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, + dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, + dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, + dswifi/arm9/source/sgIP_memblock.h, + dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, + dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, + dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, + dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, + dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, + dswifi/include/dswifi_version.h, dswifi/include/netdb.h, + dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, + fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, + include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, + libfat/gba/include/fat.h, libfat/include/fat.h, + libfat/nds/include/fat.h, libfat/source/bit_ops.h, + libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, + libfat/source/directory.c, libfat/source/directory.h, + libfat/source/fatdir.c, libfat/source/fatdir.h, + libfat/source/fatfile.c, libfat/source/fatfile.h, + libfat/source/file_allocation_table.c, + libfat/source/file_allocation_table.h, libfat/source/filetime.c, + libfat/source/filetime.h, libfat/source/libfat.c, + libfat/source/mem_allocate.h, libfat/source/partition.c, + libfat/source/partition.h, libfat/source/disc_io/disc.c, + libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, + libfat/source/disc_io/io_cf_common.c, + libfat/source/disc_io/io_cf_common.h, + libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, + libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, + libfat/source/disc_io/io_m3_common.c, + libfat/source/disc_io/io_m3_common.h, + libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, + libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, + libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, + libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, + libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, + libfat/source/disc_io/io_sc_common.c, + libfat/source/disc_io/io_sc_common.h, + libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, + libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, + libfat/source/disc_io/io_scsd_s.s, + libfat/source/disc_io/io_sd_common.c, + libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, + libnds/Makefile.arm9, libnds/libnds_license.txt, + libnds/basicARM7/source/defaultARM7.c, + libnds/include/default_font_bin.h, libnds/include/gbfs.h, + libnds/include/nds.h, libnds/include/nds/bios.h, + libnds/include/nds/card.h, libnds/include/nds/dma.h, + libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, + libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, + libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, + libnds/include/nds/system.h, libnds/include/nds/timers.h, + libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, + libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, + libnds/include/nds/arm9/background.h, + libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, + libnds/include/nds/arm9/console.h, + libnds/include/nds/arm9/exceptions.h, + libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, + libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, + libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, + libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, + libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, + libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, + libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, + libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, + libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, + libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, + libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, + libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, + libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.S, + libnds/source/arm9/exceptionHandler.s, + libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, + libnds/source/arm9/icache.s, libnds/source/arm9/image.c, + libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, + libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, + libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, + libnds/source/arm9/system.c, libnds/source/arm9/touch.c, + libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, + libnds/source/common/biosCalls.s, libnds/source/common/card.c, + libnds/source/common/gbfs.c, + libnds/source/common/interruptDispatcher.s, + libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, + sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, + timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, + tools/configure.ac, tools/runtest, + tools/ndstool/include/arm7_sha1_homebrew.h, + tools/ndstool/include/arm7_sha1_nintendo.h, + tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, + tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, + tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, + tools/ndstool/include/hook.h, tools/ndstool/include/little.h, + tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, + tools/ndstool/include/ndscreate.h, + tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, + tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, + tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, + tools/ndstool/include/passme_vhd1.h, + tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, + tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, + tools/ndstool/source/arm7_sha1_homebrew.c, + tools/ndstool/source/arm7_sha1_nintendo.c, + tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, + tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, + tools/ndstool/source/default_icon.c, + tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, + tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, + tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, + tools/ndstool/source/ndscreate.cpp, + tools/ndstool/source/ndsextract.cpp, + tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, + tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, + tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, + touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, + touchscreen/reco.h, touchscreen/touchscreen.c, + touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: + New files. + + Revision 1.10 2007/08/11 06:00:23 wntrmute + make nesting really work + + Revision 1.9 2007/01/10 15:48:27 wntrmute + remove unused code + + Revision 1.8 2006/12/16 09:10:02 wntrmute + acknowledge interrupt before calling handler + + Revision 1.7 2006/04/26 05:11:31 wntrmute + rebase dtcm, take __irq_flags and __irq_vector from linker script + move arm7 irq vector & irq flags to actual locations + + Revision 1.6 2006/04/23 18:19:15 wntrmute + reworked interrupt code to allow dtcm moving + + Revision 1.5 2005/12/12 13:01:55 wntrmute + disable interrupts on return from user handler + + Revision 1.4 2005/10/21 22:43:42 wntrmute + restore REG_IME on exit from null handler + + Revision 1.3 2005/09/27 18:21:53 wntrmute + safer nested interrupt support + + Revision 1.2 2005/09/04 16:37:01 wntrmute + check for NULL handler + + Revision 1.1 2005/09/03 17:09:35 wntrmute + added interworking aware interrupt dispatcher + + +---------------------------------------------------------------------------------*/ + +#ifdef ARM7 + .text +#endif + +#ifdef ARM9 + .section .itcm,"ax",%progbits +#endif + + .extern irqTable + .code 32 + + .global IntrMain +@--------------------------------------------------------------------------------- +IntrMain: +@--------------------------------------------------------------------------------- + mov r3, #0x4000000 @ REG_BASE + + ldr r1, [r3, #0x208] @ r1 = IME + str r3, [r3, #0x208] @ disable IME + mrs r0, spsr + stmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} + + ldr r1, [r3,#0x210] @ REG_IE + ldr r2, [r3,#0x214] @ REG_IF + and r1,r1,r2 + + ldr r0,=__irq_flags @ defined by linker script + + ldr r2,[r0] + orr r2,r2,r1 + str r2,[r0] + + ldr r2,=irqTable +@--------------------------------------------------------------------------------- +findIRQ: +@--------------------------------------------------------------------------------- + ldr r0, [r2, #4] + cmp r0,#0 + beq no_handler + ands r0, r0, r1 + bne jump_intr + add r2, r2, #8 + b findIRQ + +@--------------------------------------------------------------------------------- +no_handler: +@--------------------------------------------------------------------------------- + str r1, [r3, #0x0214] @ IF Clear + ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} + str r1, [r3, #0x208] @ restore REG_IME + mov pc,lr + +@--------------------------------------------------------------------------------- +jump_intr: +@--------------------------------------------------------------------------------- + ldr r1, [r2] @ user IRQ handler address + cmp r1, #0 + bne got_handler + mov r1, r0 + b no_handler +@--------------------------------------------------------------------------------- +got_handler: +@--------------------------------------------------------------------------------- + + mrs r2, cpsr + bic r2, r2, #0xdf @ \__ + orr r2, r2, #0x1f @ / --> Enable IRQ & FIQ. Set CPU mode to System. + msr cpsr,r2 + + str r0, [r3, #0x0214] @ IF Clear + + push {lr} + adr lr, IntrRet + bx r1 + +@--------------------------------------------------------------------------------- +IntrRet: +@--------------------------------------------------------------------------------- + mov r3, #0x4000000 @ REG_BASE + str r3, [r3, #0x208] @ disable IME + pop {lr} + + mrs r3, cpsr + bic r3, r3, #0xdf @ \__ + orr r3, r3, #0x92 @ / --> Disable IRQ. Enable FIQ. Set CPU mode to IRQ. + msr cpsr, r3 + + ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} + msr spsr, r0 @ restore spsr + str r1, [r3, #0x208] @ restore REG_IME + mov pc,lr + + .pool + .end diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s deleted file mode 100644 index 70b726e6e6..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s +++ /dev/null @@ -1,152 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.10 2007/08/11 06:00:23 wntrmute - make nesting really work - - Revision 1.9 2007/01/10 15:48:27 wntrmute - remove unused code - - Revision 1.8 2006/12/16 09:10:02 wntrmute - acknowledge interrupt before calling handler - - Revision 1.7 2006/04/26 05:11:31 wntrmute - rebase dtcm, take __irq_flags and __irq_vector from linker script - move arm7 irq vector & irq flags to actual locations - - Revision 1.6 2006/04/23 18:19:15 wntrmute - reworked interrupt code to allow dtcm moving - - Revision 1.5 2005/12/12 13:01:55 wntrmute - disable interrupts on return from user handler - - Revision 1.4 2005/10/21 22:43:42 wntrmute - restore REG_IME on exit from null handler - - Revision 1.3 2005/09/27 18:21:53 wntrmute - safer nested interrupt support - - Revision 1.2 2005/09/04 16:37:01 wntrmute - check for NULL handler - - Revision 1.1 2005/09/03 17:09:35 wntrmute - added interworking aware interrupt dispatcher - - ----------------------------------------------------------------------------------*/ - -#ifdef ARM7 - .text -#endif - -#ifdef ARM9 - .section .itcm,"ax",%progbits -#endif - - .extern irqTable - .code 32 - - .global IntrMain -@--------------------------------------------------------------------------------- -IntrMain: -@--------------------------------------------------------------------------------- - mov r3, #0x4000000 @ REG_BASE - - ldr r1, [r3, #0x208] @ r1 = IME - str r3, [r3, #0x208] @ disable IME - mrs r0, spsr - stmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} - - ldr r1, [r3,#0x210] @ REG_IE - ldr r2, [r3,#0x214] @ REG_IF - and r1,r1,r2 - - ldr r0,=__irq_flags @ defined by linker script - - ldr r2,[r0] - orr r2,r2,r1 - str r2,[r0] - - ldr r2,=irqTable -@--------------------------------------------------------------------------------- -findIRQ: -@--------------------------------------------------------------------------------- - ldr r0, [r2, #4] - cmp r0,#0 - beq no_handler - ands r0, r0, r1 - bne jump_intr - add r2, r2, #8 - b findIRQ - -@--------------------------------------------------------------------------------- -no_handler: -@--------------------------------------------------------------------------------- - str r1, [r3, #0x0214] @ IF Clear - ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} - str r1, [r3, #0x208] @ restore REG_IME - mov pc,lr - -@--------------------------------------------------------------------------------- -jump_intr: -@--------------------------------------------------------------------------------- - ldr r1, [r2] @ user IRQ handler address - cmp r1, #0 - bne got_handler - mov r1, r0 - b no_handler -@--------------------------------------------------------------------------------- -got_handler: -@--------------------------------------------------------------------------------- - - mrs r2, cpsr - bic r2, r2, #0xdf @ \__ - orr r2, r2, #0x1f @ / --> Enable IRQ & FIQ. Set CPU mode to System. - msr cpsr,r2 - - str r0, [r3, #0x0214] @ IF Clear - - push {lr} - adr lr, IntrRet - bx r1 - -@--------------------------------------------------------------------------------- -IntrRet: -@--------------------------------------------------------------------------------- - mov r3, #0x4000000 @ REG_BASE - str r3, [r3, #0x208] @ disable IME - pop {lr} - - mrs r3, cpsr - bic r3, r3, #0xdf @ \__ - orr r3, r3, #0x92 @ / --> Disable IRQ. Enable FIQ. Set CPU mode to IRQ. - msr cpsr, r3 - - ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} - msr spsr, r0 @ restore spsr - str r1, [r3, #0x208] @ restore REG_IME - mov pc,lr - - .pool - .end