Commit graph

149 commits

Author SHA1 Message Date
Maurus Cuelenaere
580b1a5c4b MIPS: don't save gp register when switching threads
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20863 a1c6a512-1295-4272-9138-f99709370657
2009-05-06 19:51:34 +00:00
Maurus Cuelenaere
c606fd04c8 Jz4740:
* Optimize & cleanup thread handling a bit
 * Unify exception return and fix a potential bug


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20659 a1c6a512-1295-4272-9138-f99709370657
2009-04-08 14:30:33 +00:00
Michael Sevakis
84f8b0be2c s3c2440 can use the generic ARM WFI which is much simpler. If there's any advantage to setting the IDLE bit for power consumption, it's possible to combine its use with the old core_sleep instead of using the loop waiting for idle to kick in. For now, go basic. Let GCC choose the register for MCR instead of forcing it to r0.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19978 a1c6a512-1295-4272-9138-f99709370657
2009-02-11 19:28:02 +00:00
Michael Sevakis
21f0c9a282 Make basic cache functions into calls, and get rid of CACHE_FUNCTION_WRAPPERS and CACHE_FUNCTIONS_AS_CALL macros. Rename flush/invalidate_icache to cpucache_flush/invalidate. They're inlined only if an implementation isn't provided by defining HAVE_CPUCACHE_FLUSH/INVALIDATE.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19971 a1c6a512-1295-4272-9138-f99709370657
2009-02-11 12:55:51 +00:00
Maurus Cuelenaere
0df38260e8 Enable sleep() on MIPS targets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19493 a1c6a512-1295-4272-9138-f99709370657
2008-12-19 23:35:42 +00:00
Michael Sevakis
0fab3e36f3 Place some LIKELY and UNLIKELY hints in kernel where I can definitively say anything about it and where it could make a small difference.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19433 a1c6a512-1295-4272-9138-f99709370657
2008-12-14 07:09:26 +00:00
Michael Sevakis
441fca176a Fix a wrong comment in thread.c and mention an alternative approach to inits. Fix a couple headers' Id fields while at it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19386 a1c6a512-1295-4272-9138-f99709370657
2008-12-10 21:10:34 +00:00
Michael Sevakis
8cfbd3604f Use cookies for thread identification instead of pointers directly which gives a buffer against wrongly identifying a thread when the slot is recycled (which has been nagging me for awhile). A slot gets 255 uses before it repeats. Everything gets incompatible so a full update is required.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19377 a1c6a512-1295-4272-9138-f99709370657
2008-12-10 08:57:10 +00:00
Rafaël Carré
22ae232db2 core_sleep(): only write once the same implementation, and add as3525 to the list
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19057 a1c6a512-1295-4272-9138-f99709370657
2008-11-09 23:56:54 +00:00
Maurus Cuelenaere
1e8be6f6b0 Onda VX747:
clean up's, bug fixes and reworks


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19007 a1c6a512-1295-4272-9138-f99709370657
2008-11-04 20:30:01 +00:00
Maurus Cuelenaere
9003c116ca Fix TABs and get rid of HAVE_BUTTON_HOLD
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18737 a1c6a512-1295-4272-9138-f99709370657
2008-10-07 20:23:56 +00:00
Rob Purchase
1a08f46329 Commit fs#9404 (iAudio 7 updates by vitja). Also fixes play/pause behaviour on D2.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18528 a1c6a512-1295-4272-9138-f99709370657
2008-09-16 08:09:44 +00:00
Maurus Cuelenaere
ebe652b51a Forgot this..
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18513 a1c6a512-1295-4272-9138-f99709370657
2008-09-14 16:28:35 +00:00
Maurus Cuelenaere
1e294e3f25 Onda VX747:
* Get rid of bug when interrupts are enabled
 * Get threading to work (although with some weirdness)
 * Other fixes/optimizations


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18512 a1c6a512-1295-4272-9138-f99709370657
2008-09-14 16:26:08 +00:00
Maurus Cuelenaere
88ae9024e4 * Add basic (non-working) support for NAND flash
* Add panicf() handling
* Add not-yet-enabled dma acceleration
* Other (minor) fixes


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18203 a1c6a512-1295-4272-9138-f99709370657
2008-08-06 20:39:02 +00:00
Maurus Cuelenaere
1f692e5f55 1) Set svn:keywords where they should've been set
2) Onda VX747 specific changes


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18080 a1c6a512-1295-4272-9138-f99709370657
2008-07-17 10:13:56 +00:00
Maurus Cuelenaere
0709f0a5c6 Add preliminary support for the Onda VX747 (MIPS target)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18032 a1c6a512-1295-4272-9138-f99709370657
2008-07-14 15:03:10 +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
606d9d0c83 Reinstate the awful ATA hack that has no proper reason to exist for iPod 5.5g 60GB and/or 80GB.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17682 a1c6a512-1295-4272-9138-f99709370657
2008-06-03 04:23:09 +00:00
Michael Sevakis
d587247ebd Actually remove the ata lock hack code for that had been used for iPod Video 60/80. It has been disabled for awhile anyway and the problem that nescessitated it really appears resolved.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17558 a1c6a512-1295-4272-9138-f99709370657
2008-05-17 16:19:58 +00:00
Michael Sevakis
248194164d Disable the ata locking hack since a recent test strongly suggests it has been resolved as of r17426. Leave the code for now just in case.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17468 a1c6a512-1295-4272-9138-f99709370657
2008-05-11 20:56:27 +00:00
Bertrik Sikken
e15f8a21a9 Made source files #include the header file that they implement to make sure they are in sync. Made some local functions static.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17312 a1c6a512-1295-4272-9138-f99709370657
2008-05-03 08:35:14 +00:00
Maurus Cuelenaere
95167e0177 Commit whole Creative Zen Vision:M target tree + all related firmware/
changes.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17241 a1c6a512-1295-4272-9138-f99709370657
2008-04-24 20:08:28 +00:00
Jens Arnold
cea07eb2a4 Fix freezing of some builds on PP5002. The PP5002 needs the not-sleep-at 0xNNNNNNN0-addresses fix everywhere when caching is enabled, not only in core_sleep(). Introduced a pair of inline functions to sleep and wake cores on PP for consistency.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17192 a1c6a512-1295-4272-9138-f99709370657
2008-04-20 17:53:05 +00:00
Michael Sevakis
97e61198a5 iPod Video 30Gig doesn't seem to need the ata locking hack so we'll just attempt to remove it for this one. Works for me on 5.5g.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17071 a1c6a512-1295-4272-9138-f99709370657
2008-04-11 10:39:24 +00:00
Michael Sevakis
9ba80c9641 Get device-specific code out of init_threads and add core_thread_init to be implemented for multicore devices.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17000 a1c6a512-1295-4272-9138-f99709370657
2008-04-06 22:08:36 +00:00
Michael Sevakis
4ab52c3456 Shorten the uncontended (expected) corelock_(try_)lock return path. Squeeze down corelock_try_lock by a couple instructions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16983 a1c6a512-1295-4272-9138-f99709370657
2008-04-06 08:48:31 +00:00
Michael Sevakis
05099149f1 Enable nocache sections using the linker. PP5022/4 must use SW_CORELOCK now with shared variables in DRAM (it seems swp(b) is at least partially broken on all PP or I'm doing something very wrong here :\). For core-shared data use SHAREDBSS/DATA_ATTR. NOCACHEBSS/DATA_ATTR is available whether or not single core is forced for static peripheral-DMA buffer allocation without use of the UNCACHED_ADDR macro in code and is likely useful on a non-PP target with a data cache (although not actually enabled in config.h and the .lds's in this commit).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16981 a1c6a512-1295-4272-9138-f99709370657
2008-04-06 04:34:57 +00:00
Michael Sevakis
58787280b8 Go back to the ata lock hack for 5g until whatever is going on there is discovered and fixed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16870 a1c6a512-1295-4272-9138-f99709370657
2008-03-28 23:39:28 +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
27cf677339 Add a complete priority inheritance implementation to the scheduler (all mutex ownership and queue_send calls are inheritable). Priorities are differential so that dispatch depends on the runnable range of priorities. Codec priority can therefore be raised in small steps (pcmbuf updated to enable). Simplify the kernel functions to ease implementation and use the same kernel.c for both sim and target (I'm tired of maintaining two ;_). 1) Not sure if a minor audio break at first buffering issue will exist on large-sector disks (the main mutex speed issue was genuinely resolved earlier). At this point it's best dealt with at the buffering level. It seems a larger filechunk could be used again. 2) Perhaps 64-bit sims will have some minor issues (finicky) but a backroll of the code of concern there is a 5-minute job. All kernel objects become incompatible so a full rebuild and update is needed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16791 a1c6a512-1295-4272-9138-f99709370657
2008-03-25 02:34:12 +00:00
Rob Purchase
1836971d51 Implement core_sleep() for TCC780x (single core).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16740 a1c6a512-1295-4272-9138-f99709370657
2008-03-22 13:18:47 +00:00
Jens Arnold
cb57bf863a Fix the PP5002 crash bug affecting iPod 1st, 2nd and 3rd Gen. Yet another of those PP5002 quirks...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16547 a1c6a512-1295-4272-9138-f99709370657
2008-03-07 23:44:46 +00:00
Michael Sevakis
bbe3f1f61c Fix a very subtle bug that would cause a yielding thread to be scheduled twice in a row even if others were woken and one of them should be selected. Evaluate next thread _after_ waking checks to keep fairness.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16444 a1c6a512-1295-4272-9138-f99709370657
2008-02-28 17:40:18 +00:00
Michael Sevakis
5ded48dbea Oops. Dump some testing stuff that got left in.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16217 a1c6a512-1295-4272-9138-f99709370657
2008-02-05 04:53:05 +00:00
Michael Sevakis
1f021af60c Gigabeat S mixer: Make some progress. Get the tick and core sleep working using the AVIC. Redo the startup code to remap from IRAM and not include the lcd driver frambuffer in the remapping (until it can be moved). Clean up LCD driver. For other misc. changes, see the diffs. Now it progresses to ATA init and fails with -11 but without crashing or hanging. Replace all bootloaders.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16216 a1c6a512-1295-4272-9138-f99709370657
2008-02-05 04:43:19 +00:00
Michael Sevakis
537b78b216 Fix a minor ;) problem that would keep other threads from running during priority_yield calls unless they had aged too much. Basically it operates in the manner of the original implementation. _May_ help 5.5g buffering problems so do test that.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16197 a1c6a512-1295-4272-9138-f99709370657
2008-02-02 03:00:34 +00:00
Michael Sevakis
608c547aa1 Fix warnings. Remove a now unneeded parameter macro from run_blocking_ops.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16109 a1c6a512-1295-4272-9138-f99709370657
2008-01-19 13:47:26 +00:00
Michael Sevakis
32a531b09b Do some simplification in switch_thread regarding interrupt enabling which simplifies kernel objects as well. Simply doing unconditional disable/enable should be fine in the firmware. Not sure about the case in the bootloader for all targets and so will evaluate but that should be fine too if everything is masked.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16107 a1c6a512-1295-4272-9138-f99709370657
2008-01-19 13:27:47 +00:00
Michael Sevakis
a8b388fb86 Enable dualcore for the pp5002 processor by adding the needed cache handling and sleep/wakeup sync to the kernel. Refine some handling of fw/bl startup for all.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15827 a1c6a512-1295-4272-9138-f99709370657
2007-11-27 01:20:26 +00:00
Michael Sevakis
68a98a0287 Fix warnings.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15710 a1c6a512-1295-4272-9138-f99709370657
2007-11-20 04:07:33 +00:00
Michael Sevakis
fadbf0a6f7 Make threads responsible for explicit cancellation of their own boosted status. Sleeping and timeouts will no longer cancel it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15709 a1c6a512-1295-4272-9138-f99709370657
2007-11-20 03:44:25 +00:00
Dave Chapman
28f6ae49ec Initial work on a port to the Logik DAX 1GB MP3/DAB player. The bootloader build compiles and runs (but only displays some debugging info), and the LCD and ADC drivers are working. Two different bootloader builds are possible: 1) The default build is just a test application for uploading to the device via tcctool; 2) Adding -DTCCBOOT to EXTRA_DEFINES in the build directory Makefile will compile the bootloader so that it can be appended to the end of the original firmware and installed on the device, dual-booting. This commit also includes some work by Hein-Pieter van Braam on a port to the iAudio 7, but that doesn't build yet. A large part of these ports will be generic to all TCC77x devices - see the TelechipsInfo wiki page for some other devices with this CPU. NOTE: Compiling these builds requires an arm-elf-gcc with armv5 support - the current version of rockboxdev.sh compiles such a gcc.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15339 a1c6a512-1295-4272-9138-f99709370657
2007-10-28 11:08:10 +00:00
Michael Sevakis
a4058aa94e The interrupt disable is only relevant on multicore targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15241 a1c6a512-1295-4272-9138-f99709370657
2007-10-21 09:43:28 +00:00
Jens Arnold
afcfa1f669 Don't keep interrupts disabled when waking a frozen thread. Fixes frozen UI on H10 while dircache scan is running in the background.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15239 a1c6a512-1295-4272-9138-f99709370657
2007-10-21 09:23:08 +00:00
Michael Sevakis
d332601135 Save a little space and only initialize the minimum for initial threads at startup. The BSS sections should already be zereod and if they're mistakenly not, be sure to crash ASAP. ;)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15204 a1c6a512-1295-4272-9138-f99709370657
2007-10-19 11:51:45 +00:00
Michael Sevakis
26b3a7405d Reverse some logic with Peterson's algorithm and cut an instruction. Make C-reference reflect it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15199 a1c6a512-1295-4272-9138-f99709370657
2007-10-19 06:19:06 +00:00
Michael Sevakis
a443614dd2 PP502x: Get switch_thread back out of IRAM and devise a better core wakeup system that's not timing dependant. Hopefully something simpler will be found or devised eventually that meets all requirements. Rename mailbox-related registers.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15179 a1c6a512-1295-4272-9138-f99709370657
2007-10-18 01:26:50 +00:00
Karl Kurbjun
f6bc19158e Turns out you can boot the main build by copying apps/rockbox.bin to /rockbox.mrboot. Something is wrong with the rockbox bootloader, but at least now we can work with the main build. Added in a warning for the core_sleep function
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15162 a1c6a512-1295-4272-9138-f99709370657
2007-10-17 05:19:20 +00:00
Karl Kurbjun
1cc852c346 Fix core_sleep for targets that have not implemented it yet
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15159 a1c6a512-1295-4272-9138-f99709370657
2007-10-17 03:44:13 +00:00