mirror of
https://git.planet-casio.com/Lephenixnoir/gint.git
synced 2024-12-29 13:03:36 +01:00
kernel: increase stack size to 12 kB on SH4 fx-9860G
BFile calls on the G-III series can overflow an 8 kB stack, overriding the VBR which is located just before (!).
This commit is contained in:
parent
b7173a5109
commit
86fad757e1
1 changed files with 7 additions and 4 deletions
|
@ -39,15 +39,18 @@ void kinit(void)
|
||||||
|
|
||||||
#ifdef FX9860G
|
#ifdef FX9860G
|
||||||
/* On fx-9860G, VBR is loaded at the end of the user RAM. On SH4, the
|
/* On fx-9860G, VBR is loaded at the end of the user RAM. On SH4, the
|
||||||
end of the user RAM hosts the stack, for which we leave 8 kB
|
end of the user RAM hosts the stack, for which we leave 12 kB
|
||||||
(0x2000 bytes). The VBR space takes about 0x600 bytes on SH3 due to
|
(0x3000 bytes). The VBR space takes about 0x600 bytes on SH3 due to
|
||||||
the compact scheme, while it uses about 0x1100 bytes for the whole
|
the compact scheme, while it uses about 0x1100 bytes for the whole
|
||||||
expanded region. */
|
expanded region. */
|
||||||
uint32_t uram_end = (uint32_t)mmu_uram() + mmu_uram_size();
|
uint32_t uram_end = (uint32_t)mmu_uram() + mmu_uram_size();
|
||||||
if(isSH4()) uram_end -= 0x2000;
|
|
||||||
uram_end -= (isSH3() ? 0x600 : 0x1100);
|
/* Stack space on SH4. 12 kB is a lot, but BFile is known to overflow
|
||||||
|
from the previous 8 kB design */
|
||||||
|
if(isSH4()) uram_end -= 0x3000;
|
||||||
|
|
||||||
/* VBR is advanced 0x100 bytes because of an unused gap */
|
/* VBR is advanced 0x100 bytes because of an unused gap */
|
||||||
|
uram_end -= (isSH3() ? 0x600 : 0x1100);
|
||||||
VBR = uram_end - 0x100;
|
VBR = uram_end - 0x100;
|
||||||
#endif /* FX9860G */
|
#endif /* FX9860G */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue