Commit Graph

294 Commits

Author SHA1 Message Date
Scott Mabin
d93b53b9e5 newlib: provide missing atomic libcalls
Provide emulated atomic load & store libcalls for u8, u16 & u32 integer
types. This is required when building with Clang as llvm does not lower
these operations to native load / stores, where as gcc does.

Provide `sync_lock_test_and_set` atomic implementations for all
supported integer types.

Closes https://github.com/espressif/esp-idf/issues/7591.
Closes https://github.com/espressif/esp-idf/issues/7592.
2021-10-08 18:46:09 +08:00
Ivan Grokhotkov
8f0ee18931 Merge branch 'feature/clang_toolchain_compat' into 'master'
Build system: minimal changes for clang compatibility

See merge request espressif/esp-idf!15168
2021-09-23 08:19:09 +00:00
Ivan Grokhotkov
d0f960a634 newlib: don't use gcc-specific pragmas for clang 2021-09-16 11:07:54 +02:00
Ivan Grokhotkov
ccda990ce5 newlib: set errno in the explicitly provided reent structure
Since these functions receive the pointer to reent structure, they
should set errno in it rather than using thread-local errno.

This didn't cause practical issues because console functions in IDF
are only called from threads, and in that case 'r' is a pointer to
the thread-local structure, so &errno is the same thing as
&__errno_r(r). Still, fixing this for consistency.
2021-09-16 09:00:07 +02:00
Ivan Grokhotkov
5da66d1d39 newlib: implement _fstat_r stub for console
When CONFIG_VFS_SUPPORT_IO is disabled, _read_r and _write_r
implementations in syscalls.c are used to provide console I/O via
esp_rom_uart_tx_one_char/esp_rom_uart_rx_one_char.

When newlib opens a (FILE*) stream, it calls fstat to check if the
underlying file is character-oriented. In this case, it configures the
stream to use line buffering. Otherwise (or if fstat fails) the stream
is opened as block buffered.

Since fstat wasn't provided, stdin/stdout/stderr streams got opened in
block buffered mode. For console, we need line buffered output so that
the stream buffer is flushed each time a complete line (ending with
'\n') is sent to stdout or stderr.

Fix by implementing _fstat_r stub, setting st->st_mdoe=S_IFCHR.
2021-09-16 09:00:07 +02:00
Andrei Safronov
9159aa58d3 tests: refactoring of the gcc's inner functions, because clang doesn't support them 2021-09-10 19:51:27 +03:00
Sachin Parekh
41973b761e newlib: Override __assert and __assert_func
Default assert implementation calls fiprintf, which tries to acquire a
lock and fails if it is executing in critical section or ISR
2021-08-05 11:09:22 +05:30
Konstantin Kondrashov
29f581fc70 freertos(esp32s3): SysTick uses systimer 2021-08-04 20:33:44 +08:00
KonstantinKondrashov
c19b37d2a9 esp_system: Adds sync of FRC & RTC counters in esp_restart
In case when FRC and RTC counters are very different then
the need to sync them before to restart the ESP
to get the correct system time after reboot.
2021-07-21 10:23:24 +05:00
Renz Bagaporo
7c22cccb9c esp32: cleanup build script 2021-07-16 20:14:27 +08:00
Ivan Grokhotkov
ca51cd67a4 Merge branch 'bugfix/correct_clang_atomics' into 'master'
newlib,clang: implement __sync_* atomics for clang/llvm toolchain.

Closes LLVM-92

See merge request espressif/esp-idf!14269
2021-07-15 19:01:32 +00:00
Andrei Safronov
40daaa9d56 newlib,clang: implement __sync_* atomics for clang/llvm toolchain. 2021-07-15 20:36:40 +03:00
Ivan Grokhotkov
cbf207bfb8 newlib: add C++ guards to the platform-specific dirent.h
Before newlib 3.3.0, <dirent.h> bundled in newlib did not include any
function declarations. Instead, the file included the platform-
specific <sys/dirent.h>. This inclusion was inside a C++ guard block.
ESP-IDF provided sys/dirent.h inside newlib component, and this file
contained all the necessary function and structure declarations.

Since da418955f5,
common function declarations have been added to <dirent.h> in newlib.
However, the inclusion of sys/dirent.h has been moved out of the C++
guard block. However we didn't notice this change and did not update
sys/dirent.h in ESP-IDF newlib component to and the now-required
C++ guards there.

This commit adds the missing C++ guards to the platform-specific
sys/dirent.h.

The declarations of common dirent.h functions are now present both in
<dirent.h> (provided by newlib) and in sys/dirent.h (provided by IDF).
We keep the declarations in sys/dirent.h for compatibility, since some
ESP-IDF files and applications may include <sys/dirent.h> directly,
rather than <dirent.h>.

Closes https://github.com/espressif/esp-idf/issues/7204
2021-07-08 15:53:58 +02:00
Shu Chen
6fce2930d0 esp32h2: enable more components to support esp32h2
Involved components:
 * app_trace
 * esp-tls
 * esp_adc_cal
 * esp_pm
 * esp_serial_slave_link
 * esp_timer
 * freertos
 * idf_test
 * log
 * mbedtls
 * newlib
 * perfmon
 * spi_flash
 * spiffs
 * ulp
 * unity
 * vfs
2021-07-01 19:53:11 +08:00
Omar Chebib
da731a7eeb psram: add configuration macros to move workaround libc functions to flash
Workaround libc can be moved to flash thanks to KConfig macros.
However, the following functions: `itoa`, `memcmp`, `memcpy`, `memset`, `strcat`, `strcmp`, and `strlen` are always kept it in IRAM.
2021-06-23 17:40:02 +08:00
morris
9afdf54748 hal: added HAL_ASSERT 2021-06-22 11:28:01 +08:00
Marius Vikhammer
79b5dedeb1 CI: minor testcases fixes and disable some cases that cant run on S3 2021-06-15 13:39:48 +08:00
Anton Maklakov
e5faf4f924 ci: fix test_build_system* fails 2021-06-07 18:48:38 +07:00
Anton Maklakov
b46b50eaa6 newlib: Add ESP_ROM_HAS_RETARGETABLE_LOCKING capability for C3 and S3 chips 2021-06-07 12:53:45 +07:00
Ivan Grokhotkov
1ca2afd982 Merge branch 'bugfix/add-MAXNAMLEN-definition' into 'master'
[newlib]add the definition of MAXNAMLEN in sys/dirent.h

Closes IDF-3219

See merge request espressif/esp-idf!13535
2021-05-17 08:03:35 +00:00
WangQixiang
65ec83a456 change MAXNAMLEN to 255 2021-05-13 11:56:52 +08:00
WangQixiang
c9c8633cba add the definition of MAXNAMLEN in sys/dirent.h 2021-05-12 16:07:19 +08:00
Ivan Grokhotkov
6f8e0d9d55 test: add test app for stdatomic functions 2021-05-10 18:13:36 +02:00
Ivan Grokhotkov
742102079a newlib: stdatomic: emulate 64-bit atomics on 32-bit SMP SoCs
Closes https://github.com/espressif/esp-idf/issues/3163
2021-05-10 18:13:36 +02:00
Ivan Grokhotkov
32fcd4f02a newlib: stdatomic: fix prototypes, don't disable compiler warnings 2021-05-10 18:13:35 +02:00
Sachin Parekh
b1eacc24f2 stdatomic: Implemented legacy __sync APIs and __atomic_exchange_n
These APIs are used when the architecture doesn't have atomic
instruction support

Closes https://github.com/espressif/esp-idf/issues/6463
2021-04-23 11:18:58 +05:30
Renz Bagaporo
a202a604d8 esp32: move system libs 2021-03-31 19:17:33 +08:00
Renz Bagaporo
e6edf34e82 esp32: move esp_clk functions 2021-03-31 19:17:33 +08:00
Renz Bagaporo
50745fa61b newlib: use system time in test 2021-03-25 15:47:19 +08:00
Renz Bagaporo
5a90113136 newlib: change microseconds offset type 2021-03-25 15:37:48 +08:00
Angus Gratton
fa2946d651 Merge branch 'feature/support_esp32s3_beta_3' into 'master'
Support ESP32S3 beta 3 target

Closes IDF-2908

See merge request espressif/esp-idf!12661
2021-03-23 10:17:58 +00:00
Renz Bagaporo
97a2d9552e newlib: persist rtc clk corrections 2021-03-19 12:04:06 +08:00
Marius Vikhammer
2aead8ba57 Support ESP32S3 Beta 3 target
Update ROM API. Port changes from bringup branch.
2021-03-18 10:24:22 +08:00
Angus Gratton
fd164b82b6 Merge branch 'refactor/move_from_xtensa' into 'master'
Movements from xtensa

Closes IDF-2164

See merge request espressif/esp-idf!10556
2021-03-11 00:24:25 +00:00
Angus Gratton
90ec0b0327 bootloader: Allow 'silent assert' config to work in bootloader
Requires adding the 'newlib' component to the bootloader project, for
platform_include header.
2021-03-03 10:26:57 +11:00
Renz Bagaporo
b1027005df arch: move stdatomic 2021-02-26 18:40:00 +08:00
Renz Bagaporo
0f03f450ff esp_hw_support: create esp_cpu
Create a esp_cpu header that contains CPU-related functions and
utilities.
2021-02-26 13:34:29 +08:00
Renz Bagaporo
03dce3668c esp_common: move tests 2021-02-24 12:16:37 +08:00
Angus Gratton
084c38a011 Merge branch 'bugfix/riscv_stack_alignment' into 'master'
core: fix cases where riscv SP were not 16 byte aligned

Closes IDF-2745

See merge request espressif/esp-idf!12413
2021-02-19 05:59:39 +00:00
Marius Vikhammer
c36dd7834f core: fix cases where riscv SP were not 16 byte aligned
RISC-V stack pointer should always be 16 byte aligned, but for some cases where
we were doing manual SP manipulation this was not always the case.
2021-02-19 11:26:21 +08:00
Angus Gratton
8c799e6469 Merge branch 'bugfix/newlib_header_additional_defines' into 'master'
newlib: fix possible redefinition of likely/unlikely macros

Closes IDFGH-4631

See merge request espressif/esp-idf!12370
2021-02-19 02:35:28 +00:00
Marius Vikhammer
eec2419390 system: enable shared stack watchpoint
Enable shared stack watchpoint for overflow detection

Enable unit tests:
 * "test printf using shared buffer stack" for C3
 * "Test vTaskDelayUntil" for S2
 * "UART can do poll()" for C3
2021-02-18 15:38:30 +08:00
Angus Gratton
7778779489 newlib: Avoid introducing ESP-IDF macros from newlib platform headers
Also, rewrite the assert.h header to be clearer

Closes https://github.com/espressif/esp-idf/issues/6445
2021-02-12 15:18:05 +11:00
Angus Gratton
807c8549e1 Merge branch 'bugfix/esp32s2_wakeup_from_light_sleep_fix' into 'master'
esp32s2 light sleep fix

Closes IDFCI-122

See merge request espressif/esp-idf!10269
2021-02-11 07:34:57 +08:00
Renz Bagaporo
f5154b82e3 newlib: init microseconds offset 2021-01-22 14:51:50 +08:00
ninh
25dcc68b5d newlib: keep esp_rtc_get_time_us when rewrite the value of RTC_SLOW_CLK_CAL_REG 2021-01-21 02:28:21 +00:00
morris
753a929525 global: fix sign-compare warnings 2021-01-12 14:05:08 +08:00
KonstantinKondrashov
aec5776091 newlib: Fix a case in FD_ISSET macro when n==-1 2021-01-06 20:54:24 +00:00
ninh
e908a32381 put pm_slp_iram_opt and pm_rtos_iram_opt related attributes in esp_pm/linker.lf 2021-01-06 03:40:28 +00:00
Marius Vikhammer
f54e9269f3 esp_system: Don't compile sleep_mode.c on c3 2020-12-31 15:20:05 +11:00