Thomas Martitz
991ae1e395
Create fimrware/asm directory for assembly optimized stuff.
...
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-22 18:46:44 +01:00
Michael Sevakis
307cb04948
AS3525v1/2: Enable nested handling of interrupts
...
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
2012-01-08 22:29:25 +00:00
Michael Sevakis
12375d1d3a
Merge functionality of wakeups and semaphores-- fewer APIs and object types. 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-03-02 08:49:38 +00:00
Michael Sevakis
9f0bad0efe
Byteswap routines don't really need 'asm volatile', just 'asm' since it 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-25 00:46:39 +00:00
Michael Sevakis
00e5a9c088
Use thumb-compatible byte swap routines when building with -mthumb.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29391 a1c6a512-1295-4272-9138-f99709370657
2011-02-24 23:12:00 +00:00
Michael Sevakis
18770dac2e
Use __builtin_constant_p() to select the best byteswapping method: constant 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
2011-01-30 00:58:45 +00:00
Thomas Martitz
3b402e254a
Change "r" back to "i" (i is for immediate, so no syntax error) and reclaim 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-15 22:29:22 +00:00
Thomas Martitz
a1bc3401f1
Fix a few possible problems discovered in -O0 / eabi experiments.
...
- 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-11-15 17:23:25 +00:00
Michael Sevakis
28dbd584fb
ARMv6: Optimize interrupt enable/disable with cpsie and cpsid. Section off 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-02-02 03:51:50 +00:00
Michael Sevakis
b0befadad1
Include divide-by-zero handling within plugins and codecs for ARM processors.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19834 a1c6a512-1295-4272-9138-f99709370657
2009-01-24 03:47:09 +00:00
Daniel Stenberg
2acc0ac542
Updated our source code header to explicitly mention that we are GPL v2 or
...
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-06-28 18:10:04 +00:00
Michael Sevakis
bbb0c3f397
Optimized byte-swapping macros for ARMv6.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17148 a1c6a512-1295-4272-9138-f99709370657
2008-04-16 20:44:10 +00:00
Michael Sevakis
1aaa89aa9b
Wow. Fix those irq #defines for ARM and use the right one in power-c200_e200.c. How'd that happen?
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17010 a1c6a512-1295-4272-9138-f99709370657
2008-04-07 01:13:44 +00:00
Michael Sevakis
af395f4db6
Do core interrupt masking in a less general fashion and save some 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
2008-03-26 01:50:41 +00:00
Michael Sevakis
6077e5b7c8
Unify PCM interface just above the hardware driver level for all targets 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-10-06 22:27:27 +00:00
Jonathan Gordon
bdf4d3927c
Hopefully fix all the errors/warnings
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14764 a1c6a512-1295-4272-9138-f99709370657
2007-09-20 08:01:56 +00:00
Karl Kurbjun
7b97fe21c0
Beginning of an M:Robe 500i port. Currently only in the bootloader stage. 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-09-20 04:46:41 +00:00
Jens Arnold
8d3ac97aff
Clean up PP502x CPU clock setup code and use the full 80MHz when boosted.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14004 a1c6a512-1295-4272-9138-f99709370657
2007-07-26 15:07:16 +00:00
Michael Sevakis
4ae87c8b8a
Gigabeat: Add timer functionality. Rework tick timer setup to be exactly 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-06 21:36:32 +00:00
Jens Arnold
7b861eca95
More PP502x clock setup rework. This should fix the freezes on PP5020 once 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-07-03 00:42:42 +00:00
Michael Sevakis
3c38fe4204
Gigabeat: Separate driver for audio codec. Tweak pcm driver to comply with intended interface.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13307 a1c6a512-1295-4272-9138-f99709370657
2007-05-02 22:33:24 +00:00
Michael Sevakis
0987a6be89
This is how it should have been done.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13292 a1c6a512-1295-4272-9138-f99709370657
2007-04-30 08:47:34 +00:00
Michael Sevakis
c7f84b6763
ARM/PP: more optimized set_irq_level()
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13291 a1c6a512-1295-4272-9138-f99709370657
2007-04-30 08:16:25 +00:00
Michael Sevakis
20c6bf50fe
Do the target shuffle again a better way by including from higher levels
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13151 a1c6a512-1295-4272-9138-f99709370657
2007-04-14 01:18:06 +00:00