forked from Imagelibrary/rtems
2008-04-17 Joel Sherrill <joel.sherrill@OARcorp.com>
* 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.
This commit is contained in:
@@ -1,3 +1,20 @@
|
|||||||
|
2008-04-17 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||||
|
|
||||||
|
* 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 <joel.sherrill@OARcorp.com>
|
2008-04-17 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||||
|
|
||||||
* .cvsignore, include/.cvsignore: New files.
|
* .cvsignore, include/.cvsignore: New files.
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ bin2s: $(srcdir)/tools/bin2s.c
|
|||||||
|
|
||||||
SUFFIXES = .bin
|
SUFFIXES = .bin
|
||||||
|
|
||||||
%.s: %.bin bin2s
|
%.S: %.bin bin2s
|
||||||
$(srcdir)/tools/bin2s $< > $(srcdir)/$@
|
$(srcdir)/tools/bin2s $< > $(srcdir)/$@
|
||||||
|
|
||||||
libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \
|
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/interruptDispatcher.S \
|
||||||
libnds/source/common/interrupts.c \
|
libnds/source/common/interrupts.c \
|
||||||
libnds/source/arm9/boxtest.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/console.c \
|
||||||
libnds/source/arm9/COS.s \
|
libnds/source/arm9/COS.S \
|
||||||
libnds/source/arm9/dcache.S \
|
libnds/source/arm9/dcache.S \
|
||||||
libnds/source/arm9/exceptionHandler.S \
|
libnds/source/arm9/exceptionHandler.S \
|
||||||
libnds/source/arm9/exceptions.c \
|
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/ndsmotion.c \
|
||||||
libnds/source/arm9/pcx.c \
|
libnds/source/arm9/pcx.c \
|
||||||
libnds/source/arm9/rumble.c \
|
libnds/source/arm9/rumble.c \
|
||||||
libnds/source/arm9/SIN.s \
|
libnds/source/arm9/SIN.S \
|
||||||
libnds/source/arm9/sound.c \
|
libnds/source/arm9/sound.c \
|
||||||
libnds/source/arm9/system.c \
|
libnds/source/arm9/system.c \
|
||||||
libnds/source/arm9/TAN.s \
|
libnds/source/arm9/TAN.S \
|
||||||
libnds/source/arm9/touch.c \
|
libnds/source/arm9/touch.c \
|
||||||
libnds/source/arm9/video.c \
|
libnds/source/arm9/video.c \
|
||||||
libnds/source/arm9/videoGL.c
|
libnds/source/arm9/videoGL.c
|
||||||
@@ -139,7 +139,7 @@ if HAS_NETWORKING
|
|||||||
# dswifi, ARM9 side
|
# dswifi, ARM9 side
|
||||||
noinst_PROGRAMS += dswifi9.rel
|
noinst_PROGRAMS += dswifi9.rel
|
||||||
dswifi9_rel_SOURCES = dswifi/arm9/source/wifi_arm9.c \
|
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_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)
|
dswifi9_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||||
endif
|
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_sc_common.c \
|
||||||
libfat/source/disc_io/io_scsd.c \
|
libfat/source/disc_io/io_scsd.c \
|
||||||
libfat/source/disc_io/io_sd_common.c \
|
libfat/source/disc_io/io_sd_common.c \
|
||||||
libfat/source/disc_io/io_dldi.s \
|
libfat/source/disc_io/io_dldi.S \
|
||||||
libfat/source/disc_io/io_scsd_s.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_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_CCASFLAGS = $(AM_CCASFLAGS) -DARM9 -I$(srcdir)/libnds/include -I$(srcdir)/libfat/source/disc_io
|
||||||
libdldi_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
libdldi_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||||
@@ -188,7 +188,7 @@ if HAS_NETWORKING
|
|||||||
# dswifi, ARM7 side
|
# dswifi, ARM7 side
|
||||||
noinst_PROGRAMS += dswifi7.rel
|
noinst_PROGRAMS += dswifi7.rel
|
||||||
dswifi7_rel_SOURCES = dswifi/arm7/source/wifi_arm7.c \
|
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_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_CFLAGS = -mcpu=arm7tdmi -msoft-float
|
||||||
dswifi7_rel_CCASFLAGS = -mcpu=arm7tdmi -msoft-float
|
dswifi7_rel_CCASFLAGS = -mcpu=arm7tdmi -msoft-float
|
||||||
|
|||||||
245
c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S
Normal file
245
c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S
Normal file
@@ -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 <mbucchia@gmail.com>
|
||||||
|
|
||||||
|
* 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
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -24,6 +24,144 @@
|
|||||||
distribution.
|
distribution.
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.1 2008/04/16 18:37:32 joel
|
||||||
|
2008-04-16 Matthieu Bucchianeri <mbucchia@gmail.com>
|
||||||
|
|
||||||
|
* 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
|
Revision 1.5 2006/03/15 12:37:14 wntrmute
|
||||||
reformatted for legibility
|
reformatted for legibility
|
||||||
grouped arm7 and arm9 specific code
|
grouped arm7 and arm9 specific code
|
||||||
@@ -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 <mbucchia@gmail.com>
|
||||||
|
|
||||||
|
* 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
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user