Alex Stewart
f1bff97103
Further optimizations for LoadStoreErrorHandler
2015-09-21 22:13:14 -07:00
Angus Gratton
f47aa77982
Moved DoubleLoadStorageHandler to end of functions, improve fast path l8ui performance
...
This allows a conditional branch that previously required a full jump instruction not to require it.
2015-09-15 15:09:42 +10:00
Angus Gratton
9cd23e08a4
Fix performance regression in 3911a94cc
2015-09-15 15:00:56 +10:00
Angus Gratton
7d779389ab
unaligned_load: Fix sign extension, add test case for sign extension
...
H/T to @foogod again for this.
2015-09-15 12:00:32 +10:00
Angus Gratton
c7a7dfdf82
Remove the unaligned load handler to its own source file as it was getting quite complex
...
The downside here is needing to use #include so the 'beq' in the
exception vector can land on it directly, save an instruction.
There might be a better way to do this, but it seems hard to "curate"
the order that symbols appear in each section.
2015-09-15 11:34:21 +10:00
Angus Gratton
3911a94cc8
Remove one more branch from l8ui code path
...
Thanks for @foogod for the heads-up on this.
2015-09-15 11:01:21 +10:00
Angus Gratton
26e1ce325e
Fix sign extension as suggested by @foogod
...
Also removes a branch from l8ui path, saves some cycles
2015-09-14 18:30:11 +10:00
Angus Gratton
259c9b643f
Exception vectors: Remove no-op syscallhandler
2015-09-14 18:17:45 +10:00
Angus Gratton
0e0c5d89b8
NMI exception handler: Fix reserving too much RAM for registers
2015-09-14 17:43:29 +10:00
Angus Gratton
9c15b757d3
Exception handlers: remove unused NMIHandlerAddress
2015-09-14 17:22:50 +10:00
Angus Gratton
0432ae3745
Use GPIO2 for led_debug.S
2015-09-14 17:20:00 +10:00
Angus Gratton
45d4e0da2d
Exception vectors: Rearrange to use absolute offets instead of .align hacks
2015-09-14 17:20:00 +10:00
Angus Gratton
a5a179beef
Extended unaligned load support to work from DoubleExceptionVector
...
Allows handling bad loads that occur inside level 1 exception handlers.
2015-09-14 17:20:00 +10:00
Angus Gratton
ac0a947453
Merge branch 'master' into experiments/unaligned_load
2015-09-10 08:19:42 +10:00
Angus Gratton
1d7bfeeccd
Merge branch 'fix/int32_t'
...
Closes #42
2015-09-09 16:23:31 +10:00
Angus Gratton
7e73693898
Rework component makefiles to have a default <component>_ROOT
...
This fixes a long-standing bug where build directories sometimes
expanded many levels deeper than they should have.
Component names can now no longer contains slashes (ie the component
name for 'extras/i2c' is now just 'i2c')
2015-09-08 09:59:59 +10:00
Angus Gratton
7ed064a750
libc: Redefine int32_t/uint32_t as 'int' not 'long'
...
libc built from projectgus/newlib-xtensa@0077776963
Closes #42
2015-09-05 13:37:00 +10:00
Angus Gratton
920ee8bf85
libc syscalls: ENOSYS implementations for open,fstat,close,lseek
...
Closes #41
2015-09-03 11:45:52 +10:00
Angus Gratton
568ebc0fdc
libc read()/write() syscalls - return EBADF if fd is not stdin/stdout as applicable
...
As discussed in #41
Also fixes indent in _read_r
2015-09-03 11:34:54 +10:00
Alex Stewart
b0206d0ca6
Fix broken UART(i) definition
2015-08-25 22:31:47 -07:00
Alex Stewart
e2e841c660
Remove 'packed' attribute from all regs structs
2015-08-25 17:13:13 -07:00
Alex Stewart
2a939e97b5
Remove unnecessary AND for VAL2FIELD macro
...
Added VAL2FIELD_M / SET_FIELD_M for rare cases when there might actually be some need for it.
2015-08-25 17:07:06 -07:00
Angus Gratton
22d35ed5f2
Merge pull request #29 from foogod/issue_8
...
Add more *_regs.h definitions
2015-08-24 16:14:19 +10:00
Angus Gratton
050b17adbe
Add a comment explaining commented out REG_BASE lines
...
Change was part of #27
2015-08-22 17:39:25 +10:00
Alex Stewart
2f3b82812b
Add esp/rtcmem_regs.h
2015-08-21 14:20:00 -07:00
Alex Stewart
fdbb361a60
Fix a couple of struct def issues with 2 previous commits
2015-08-21 14:06:38 -07:00
Alex Stewart
0b6dfb6080
Add more regs to esp/dport_regs.h
...
Added a bunch of definitions based on info in http://esp8266-re.foogod.com/wiki/Memory_Map#dport0
2015-08-21 13:59:20 -07:00
Alex Stewart
e88b5b8c4b
Add esp/uart_regs.h and esp/spi_regs.h
2015-08-21 13:56:23 -07:00
Alex Stewart
1ebb85b150
rename GPIO_CONF_DRIVER_ENABLE back to GPIO_CONF_PUSH_PULL
2015-08-21 09:54:20 -07:00
Alex Stewart
8263fce80f
Fix leftover IOMUX_FUNC_A/D references
2015-08-19 16:53:02 -07:00
Alex Stewart
d2231b7ff5
Cleanup a few comments in *_regs.h files
2015-08-19 16:50:56 -07:00
Alex Stewart
177ad281aa
Add esp/wdt_regs.h
2015-08-19 16:48:11 -07:00
Alex Stewart
4fa66ca391
Added esp/timer_regs.h and esp/dport_regs.h
2015-08-19 11:34:18 -07:00
Alex Stewart
b271e19b51
Replace stdint.h with esp/types.h in gpio_regs.h
2015-08-19 09:05:03 -07:00
Alex Stewart
b84a69168f
Fix cut-paste error in gpio_regs.h comment
2015-08-19 09:03:18 -07:00
Alex Stewart
fc1a1a7d0a
Add esp/gpio_regs.h
2015-08-18 22:46:25 -07:00
Alex Stewart
2ffd3da71e
Add esp/iomux_regs.h
2015-08-18 17:38:31 -07:00
Angus Gratton
7f338e66cb
Unaligned load: Remove debugging variables
2015-08-11 16:25:35 +10:00
Angus Gratton
e3b24df043
Unaligned load: Shave a few more instructions off
2015-08-11 16:25:11 +10:00
Angus Gratton
3b3f5ea771
Unaligned loads: Only save working registers, use jump table to load non-working registers
2015-08-11 15:29:53 +10:00
Angus Gratton
8ea4ae27e2
Unaligned loader: Support l16si
2015-08-11 15:03:53 +10:00
Angus Gratton
773a046dc3
Unaligned loader: clean up, reduce number of registers
2015-08-11 14:23:41 +10:00
Angus Gratton
bfd38cd1e2
Experimental support for storing const strings in SPI flash or IRAM
...
As discussed in #11
Known limitations:
- Only supports l8ui/l16ui
- Unoptimised load routine
- Not called from DoubleExceptionHandler but should be
- Doesn't restore state properly when falling through to fatal exception handler
2015-08-10 12:03:03 +10:00
Angus Gratton
d685581829
Syscall hander: Fix a3 save address
...
(SDK doesn't use syscall exception so bug probably never hit?)
2015-08-10 11:54:30 +10:00
Johan Kanflo
64a1e5598b
Correct prototype for sdk_uart_rx_one_char, kudos to @foogod
2015-08-07 13:26:06 +02:00
Angus Gratton
bed6907d22
Exception vector address must be 256 byte aligned
...
Not actually a problem with the current linker script as the address is
predetermined there at start of IRAM, but might as well be accurate
about it.
As per advice from @foogod on esp8266-re mailing list:
https://groups.google.com/d/msg/esp8266-re/1ljIY3Zttbo/HvzHSWOLCgAJ
2015-08-06 09:54:46 +10:00
Angus Gratton
19b8383069
Working TFTP server based OTA updates
...
Tested with 16MBit flash configuration, two rboot update slots.
Closes #10
2015-08-05 14:10:14 +10:00
Angus Gratton
aed843fc14
exception_vectors: Remove some cruft some the symbol table
2015-07-30 10:10:37 +10:00
Angus Gratton
efc454035c
Move all code paths touched by NMI to IRAM
...
Prerequisite for calling Cache_Read_Disable() for OTA updates.
Massive thanks due to @foogod and their xtobjdis tool, creating the call
graph of where the wDev_ProcessFiq touched (including in newlib, etc.)
would have otherwise been very painful:
https://bitbucket.org/foogod/xtobjdis
2015-07-29 16:47:33 +10:00
Angus Gratton
28fdebee92
gpio: Change gpio_write argument to bool
2015-07-29 10:35:15 +10:00