Commit graph

20 commits

Author SHA1 Message Date
Aidan MacDonald
4bd97c6535 mips: consolidate exception handling, add exception backtraces
Merge the x1000 and jz47xx exception handling code since they use
the same exception vectors and handlers. The interrupt handler is
now called from the common exception vector, but remains separate
for each board since they have different IRQ layouts.

The new exception handler can provide a stack traceback from the
interrupted code, rather than the (uninteresting) caller traceback
displayed by panicf. This allows you to see what led up to a null
pointer deref or division by zero, which makes it _much_ easier to
track down errors that occur in common leaf functions like strcmp.

Change-Id: I59a0ebb5e40fcb36505c3bfdb47f8cac2f9936b1
2022-10-17 09:04:18 -04:00
Aidan MacDonald
d5695822a7 MIPS: remove .MIPS.abiflags section
The abiflags data is only used to communicate ABI information to a
program loader -- you can see what info is stored with readelf -A.
Dropping it shaves 24 bytes off of every binary (including plugins).

Change-Id: Iae78eeffe5c840ff67717707fb94821d24aac8ec
2021-04-26 12:41:06 +00:00
Aidan MacDonald
d6220f618b MIPS: emulate -ffunction-sections with macros in mmu-mips
Using a macro to put each function in its own .icode-based section
allows us to put the functions in IRAM _and_ have linker GC. This
removes a troublesome #ifdef BOOTLOADER_SPL on the X1000 target.

Change-Id: Ia7b59778f5c36b7970dee4280547e434a1f4fc5a
2021-04-25 14:04:38 +00:00
Solomon Peachy
c54170e8f6 mips: Adjust stack sizes
Main/IRQ  from:   7.5/0.75   to:  7.25/1.0

With the reduction of the opus codec stack usage, giving the IRQ stack
some additional breathing room is now possible.

Change-Id: Id0cd3747fcaab70e2360667ac8c1a97ba7234ccf
2020-07-15 11:43:39 -04:00
Solomon Peachy
52ed74aad0 mips: Adjust main & irq stack sizes to fit in IRAM on all targets
New amounts:

7.50K main stack
0.75K irq stack

Prior values of 8K+1K overflowed IRAM by ~660 bytes on Onda 7x7 targets,
but worked on the xDuoo X3.

(The discrepancy is due to the Onda targets having more LCD code shoved
 into IRAM.)

Change-Id: I16fcfae3c5f3e36db688dfa9167b620584e79df8
2019-01-02 19:52:05 -05:00
Solomon Peachy
36a50dd00f mips: Use a separate IRQ stack & optimize IRQ handling a little
Should prevent the IRQ-related stack overflows seen on MIPS targets.

Change-Id: I447336ef3fe37e11b3276a78ba220ce64c2f87f5
2019-01-02 23:30:04 +01:00
Boris Gjenero
ca9111ef64 Add KEEP() around vectors in linker scripts.
Vectors are needed by the CPU, but they don't need to be accessed by Rockbox.
Without the KEEP(), they can be removed when liking with --gc-sections, 
creating a broken binary without any warnings. This tells the linker to not
remove them. It should enable use of --gc-sections for all targets. When not
using --gc-sections, this does not change the binary.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31351 a1c6a512-1295-4272-9138-f99709370657
2011-12-18 06:43:08 +00:00
Thomas Martitz
3478bc5d6d mips is predefined by gcc, but we want it for paths. Don't let others fall into this trap again. Use __mips instead
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27872 a1c6a512-1295-4272-9138-f99709370657
2010-08-24 13:41:45 +00:00
Maurus Cuelenaere
cf9935d636 Onda VX747: add dual-boot capability + make it possible to permanently 'stick' Rockbox to your DAP
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21919 a1c6a512-1295-4272-9138-f99709370657
2009-07-17 14:30:42 +00:00
Maurus Cuelenaere
7c6a725e8e Fix red
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21332 a1c6a512-1295-4272-9138-f99709370657
2009-06-18 18:27:53 +00:00
Maurus Cuelenaere
42c7fb6b8b Remove some redundant links in MIPS linker scripts
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20740 a1c6a512-1295-4272-9138-f99709370657
2009-04-19 13:58:55 +00:00
Maurus Cuelenaere
04c7379ac5 Onda VX747: commit some parts to get apps/ to compile (more will follow)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19954 a1c6a512-1295-4272-9138-f99709370657
2009-02-09 10:02:38 +00:00
Maurus Cuelenaere
aefbd6301a * Clean up Jz4740 USB tool a bit
* Make IHFSsplit compile under Windows
 * Change SDRAM base address + remove hack for Onda VX747


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18395 a1c6a512-1295-4272-9138-f99709370657
2008-09-03 12:42:14 +00:00
Maurus Cuelenaere
62c4a2838e Onda VX747:
* Overall cleanup (still needs work)
  * Add preliminary USB support
  * Add power off support
  * Add preliminary MMU handling


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18348 a1c6a512-1295-4272-9138-f99709370657
2008-08-26 21:48:49 +00:00
Maurus Cuelenaere
447ffc8bf8 * Add interrupt handling (but still not working)
* Clean up linker script and bootup routines


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18229 a1c6a512-1295-4272-9138-f99709370657
2008-08-09 23:31:38 +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
0a09022a39 Fix compiling
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18149 a1c6a512-1295-4272-9138-f99709370657
2008-07-30 09:54:25 +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
e6248f2e5d Remove svn:executable
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18033 a1c6a512-1295-4272-9138-f99709370657
2008-07-14 15:09:22 +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