summaryrefslogtreecommitdiff
path: root/firmware/target/arm/system-arm.h
AgeCommit message (Collapse)Author
2012-01-22Create fimrware/asm directory for assembly optimized stuff.Thomas Martitz
This dir is suitable for stuff that doesn't fit the target tree, e.g. because it also builds on hosted or otherwise. It also has a generic subfolder for fallback C implementations so that not all archs need to provide asm files. SOURCES should only contain "foo.c" where foo.c includes the specific <arch>/foo.c files from the subdirs using the preprocessor. This way automatic selection of asm versions or generic C verion is possible. For the start, the thread support files are moved, since ASM threads can be used on hosted platforms as well. Since core_sleep() remains platform specific it's moved to the corresponding system.h headers. Change-Id: Iebff272f3407a6eaafeb7656ceb0ae9eca3f7cb9
2012-01-08AS3525v1/2: Enable nested handling of interruptsMichael Sevakis
Mostly for the sake of reducing latency for audio servicing where other service routines can take a long time to complete, leading to occasional drops of a few samples, especially in recording, where they are fairly frequent. One mystery that remains is GPIOA IRQ being interrupted causes strange undefined instruction exceptions, most easily produced on my Fuze V2 with a scrollwheel. Making GPIOA the top ISR for now, thus not interruptible, cures it. SVC mode is used during the actual calls. Hopefully the SVC stack size is sufficient. Prologue and epilogue code only uses the IRQ stack and is large enough. Any routine code that should not be interrupted should disable IRQ itself from here on in. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31642 a1c6a512-1295-4272-9138-f99709370657
2011-03-02Merge functionality of wakeups and semaphores-- fewer APIs and object types. ↵Michael Sevakis
semaphore_wait takes a timeout now so codecs and plugins have to be made incompatible. Don't make semaphores for targets not using them. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29492 a1c6a512-1295-4272-9138-f99709370657
2011-02-25Byteswap routines don't really need 'asm volatile', just 'asm' since it ↵Michael Sevakis
should be safe to move them for optimizing. Clean up the line endings for ARM. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29394 a1c6a512-1295-4272-9138-f99709370657
2011-02-24Use thumb-compatible byte swap routines when building with -mthumb.Michael Sevakis
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29391 a1c6a512-1295-4272-9138-f99709370657
2011-01-30Use __builtin_constant_p() to select the best byteswapping method: constant ↵Michael Sevakis
or target optimized. Same macro can then be used for constant values and inits as well as non-constant. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29171 a1c6a512-1295-4272-9138-f99709370657
2009-11-15Change "r" back to "i" (i is for immediate, so no syntax error) and reclaim ↵Thomas Martitz
a bit binsize. Live with that those function don't build with -O0 since they rely on inlining. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23641 a1c6a512-1295-4272-9138-f99709370657
2009-11-15Fix a few possible problems discovered in -O0 / eabi experiments.Thomas Martitz
- two essential parts of Sansa AMS drivers are optimzed away in newer gcc, so mark them volatile. - use "r" instead of "i" (which is apparently invalid syntax) for the input list in some inline assembly git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23634 a1c6a512-1295-4272-9138-f99709370657
2009-02-02ARMv6: Optimize interrupt enable/disable with cpsie and cpsid. Section off ↵Michael Sevakis
system-arm.h by ARM_ARCH rather than checking within each implementation. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19905 a1c6a512-1295-4272-9138-f99709370657
2009-01-24Include divide-by-zero handling within plugins and codecs for ARM processors.Michael Sevakis
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19834 a1c6a512-1295-4272-9138-f99709370657
2008-06-28Updated our source code header to explicitly mention that we are GPL v2 orDaniel Stenberg
later. We still need to hunt down snippets used that are not. 1324 modified files... http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
2008-04-16Optimized byte-swapping macros for ARMv6.Michael Sevakis
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17148 a1c6a512-1295-4272-9138-f99709370657
2008-04-07Wow. Fix those irq #defines for ARM and use the right one in ↵Michael Sevakis
power-c200_e200.c. How'd that happen? git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17010 a1c6a512-1295-4272-9138-f99709370657
2008-03-26Do core interrupt masking in a less general fashion and save some ↵Michael Sevakis
instructions to decrease size and speed things up a little bit. Small fix to a few places where interrupts would get enabled again where they shouldn't have been (context switching calls when disabled). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16811 a1c6a512-1295-4272-9138-f99709370657
2007-10-06Unify PCM interface just above the hardware driver level for all targets ↵Michael Sevakis
including the sims. Perform lockout of audio callback when changing states. Weird new playback or recording trouble? Check before and after this revision first though things seem quite sound. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15006 a1c6a512-1295-4272-9138-f99709370657
2007-09-20Hopefully fix all the errors/warningsJonathan Gordon
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14764 a1c6a512-1295-4272-9138-f99709370657
2007-09-20Beginning of an M:Robe 500i port. Currently only in the bootloader stage. ↵Karl Kurbjun
Needs another piece of code to start the boot process - will be in the wiki. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14763 a1c6a512-1295-4272-9138-f99709370657
2007-07-26Clean up PP502x CPU clock setup code and use the full 80MHz when boosted.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14004 a1c6a512-1295-4272-9138-f99709370657
2007-07-06Gigabeat: Add timer functionality. Rework tick timer setup to be exactly ↵Michael Sevakis
100Hz. Metronome should work now but some pcm changes are needed to have faster tocks work correctly (in the works). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13806 a1c6a512-1295-4272-9138-f99709370657
2007-07-03More PP502x clock setup rework. This should fix the freezes on PP5020 once ↵Jens Arnold
and for all. Enabled clock scaling for H10. * CPUFREQ_MAX changed to 78MHz * To be cleaned up soon. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13767 a1c6a512-1295-4272-9138-f99709370657
2007-05-02Gigabeat: Separate driver for audio codec. Tweak pcm driver to comply with ↵Michael Sevakis
intended interface. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13307 a1c6a512-1295-4272-9138-f99709370657
2007-04-30This is how it should have been done.Michael Sevakis
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13292 a1c6a512-1295-4272-9138-f99709370657
2007-04-30ARM/PP: more optimized set_irq_level()Michael Sevakis
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13291 a1c6a512-1295-4272-9138-f99709370657
2007-04-14Do the target shuffle again a better way by including from higher levelsMichael Sevakis
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13151 a1c6a512-1295-4272-9138-f99709370657