Dropping this after some failed attempts to work around musl dlclose implementation, fortunately there's a native port.
Change-Id: I17550df81494c6e67ddab21d44fe1287ccfa6156
This reverts commit 5323c49fe6.
This caused build failures on two of the three affected targets. The intent
of the delted code was to force thumb on unless it had been explicitly
disabled. Due to extreme space constraints those targets _need_ to
be built in thumb mode.
asm volatile (
"mov %[t0], %[out], asr #11 \n"
"mul %[out], %[t0], %[envx] \n"
: [out]"+r"(output), [t0]"=&r"(t0)
: [envx]"r"((int) voice->envx));
This is resulting in "Rd and Rm should be different in mul" error,
because the compiler is putting [out] and [t0] into the same
register.
After some poking there doesn't appear to be a sane way to change
the constraints, so just disable it for now.
Change-Id: I7827713c8aadb27f0bf4a6f4a3e1d910c6193686
ata-creativezen looks like a legit memory-trashing bug, the rtc fixes
are bitwise inversion of a bool, and the remaining are just unused
static variables.
Change-Id: I1a818d4839cd3a54ca6e85f26feb743a4a9d29dc
Therefore, turn on MAX_VARIABLE_LOG_SECTOR so we can support 512B and 4K
sector sizes. Additionally, correct the interpretation of identify info
word 106 in CE-ATA mode.
Change-Id: I24dc7dd4a8617fcb60ed87c0c1be98d00dbdfa30
Unless you've modded the device with modern CF or mSATA storage, it's
not likely to achieve anything. the original hard drives (supposedly)
lack SMART support, and none of the SD adapters bother to emulate it.
Change-Id: Id3cbe717c64947faf4b23d8c84a04b822cfb35da
There are numerous sub-commands, this makes it possible to call the others.
Also in this patch is the ability for the "default" ATA driver to
query smart data too
Change-Id: Ie3aaf9e0b2d7a5d25d09dea34e4f10ee29047e1b
This is the first step towards enabling this feature for all ATA
devices.
Only the ipod6g supports it out of the box with its stock storage device
but with the prevalence of flash/ssd mods of one sort or another, this
really should be determined at runtime.
Change-Id: Ie35d97fd857bec8213cd0a2ad80695e8bb04a2d6
This is an unofficial command that many USB<->ATA chipsets support,
allowing direct passthrough of ATA commands to the device.
We don't pass things through as-is; instead we only intercept and handle
requests for IDENFITY INFO and SMART. Everything else will return an
error.
Change-Id: I3bbb76990e5f6f0512f6eb42825fa505475b2ecd
(From 4MB->2MB and 8MB->2MB, respectively)
This is a hosted platform with a decent amount of free RAM; however
plugins and codecs are dlopen() which doesn't count against those
buffers. Furthermore, the rgnano uses musl libc which does NOT
implement dlclose() so plugins, codecs, etc stick around in RAM
indefinitely even if they are never used again.
By shrinking these buffers we free up a bit more headroom for dlopen()
to leak, and for the host OS to provide disk caches and whatnot.
Change-Id: Ie657bd3b9fc8bd2a1f4bbc07debe3b10538c41c3
Shrink audio buffer from ~256MB to ~192MB. Increase plugin buffer size
to 2MB, not that it should matter given how much extra RAM this platform has.
This leaves plenty of room for the base OS to do what it needs to do.
Change-Id: I59ca235b9cf80cf86d406e4a144fee7d7784ed5d
Hosted platforms use dlopen() for plugin loading, and hibylinux is
relatively RAM constrained, so shrink this will free up more memory to
the OS for plugins to use.
Change-Id: I6b7cb17b964eaf5afc4958db242dfe4b82178e2e
This represents a 256K increase from the former (MEMORYSIZE-0.75), and
is necessary due to the growth in our binary sizes over the past decade
or so.
It is debatable if this is enough given that our actual memory
usage is approximately (MEMORYSIZE+3) megabytes (plus runtime OS
overhead) for the typical hosted build, but giving the host OS a bit
more breathing room is warranted.
Change-Id: I53e044585a32efd50a85e68d64fd21921eda01a3
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.
This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match. This includes:
* utf8decode() and friends
* font manipulation, caching, rendering, and generation
* on-screen keyboard
* FAT filesystem (parsing and generating utf16 LFNs)
* WIN32 simulator platform code
Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.
Appears to work on:
* hosted linux, native, linux simulator in both 16/32-bit modes.
Needs testing on:
* windows and macos simulator (16bit+32bit)
Change-Id: Iba111b27d2433019b6bff937cf1ebd2c4353a0e8
High-frequency files increasingly use a block size of over 4608B, which
means we need larger buffers to decode them. However, larger buffers no
longer fit in IRAM on less-capable devices, hurting performance for
"normal" file playback.
On our slowest devices (M68K and PP-based devices), this is not worth
the tradeoff as they will likely not have enough CPU oomph to decode and
downmix these files in realtime.
S5L87xx-based devices have the raw performance to do this, so we decided
to err on the side of wider file compatibility at the cost of some
performance.
All other devices are unaffected.
Change-Id: I7344cf4c8c6b7b5c14f1ea67381160665d6ece5b
All toolchain dependencies are circa the GCC 10.5.0 release:
GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24
Native:
* arm - mini2g, nano2g works
- ipod6g hangs at logo display
* mips - xduoox3 works
* m68k - binaries untested
Hosted:
* arm - samsungypr0 works
* mips - xduoox3ii works
* Android NDK - unchanged at GCC 4.9.4
Change-Id: Ic157255d76030e66325719e64331f553cb7c4363
By switching them from (const void* volatile*) to (void* volatile*)
The 'const' bit was causing GCC>4 to optimize away writes to those
addresses when compiled with -Os, badly breaking the interrupt handler.
Change-Id: Ia4b0ca37e082bddf78e084b80a5e550894645f1a
* move all state into IRAM
* eliminate dummy variables
* get rid of 'naked' attribute and (slightly wasteful) hand-written asm
in favor of auto-created 'interrupt' code
Change-Id: Ie6a2e12a4c1a0faa6ae89504cf931657044bd457
Clarifies presumably intentional fall-through for
PF_TRACKLIST and fixes unwanted behavior of
PF_TRACKLIST while scrolling, which may have
started playback instead of showing the track list.
(affected keymaps at the moment are only SANSA_FUZE_PAD,
SAMSUNG_YH820_PAD, SAMSUNG_YH92X_PAD, and FIIO_M3K_PAD)
Change-Id: I335dd1b4a2152caed966b73aaa189bcfddc79734
When you're using a "large" screen device, and the message doesn't need
to scroll, parts of the previous mesage are left behind.
Work around this by explicitly clearing the messgage with a loooong
blank string.
Change-Id: I02f7789eb6567e92ecca174c40dabc4b580ac045
We already use targeted optimization for most codecs, and the
DSP code is just as performance-sensitive.
Improves mp3 decoding performance by a whopping 1% wwhen PBE is
turned on.
Change-Id: I801a6624c0f7068b6cd67961ad3b08f809b92fca