1#![allow(non_camel_case_types)]
2
3use core::ffi::{c_char, c_int, c_long, c_void};
4
5#[path = "v1.rs"]
7pub(crate) mod chip_specific;
8
9pub type clock_t = c_long;
10
11#[repr(C)]
12#[derive(Debug, Copy, Clone)]
13pub struct tms {
14 _unused: [u8; 0],
15}
16
17#[repr(C)]
18#[derive(Debug, Copy, Clone)]
19pub struct timeval {
20 _unused: [u8; 0],
21}
22
23#[repr(C)]
24#[derive(Debug, Copy, Clone)]
25pub struct stat {
26 _unused: [u8; 0],
27}
28
29#[repr(C)]
30#[derive(Debug, Copy, Clone)]
31pub struct __lock {
32 _unused: [u8; 0],
33}
34
35pub type _LOCK_T = *mut __lock;
36
37pub type _lock_t = _LOCK_T;
38
39#[repr(C)]
40#[derive(Debug, Copy, Clone)]
41pub struct _iobuf {
42 pub _placeholder: *mut c_void,
43}
44
45#[allow(clippy::upper_case_acronyms)]
46pub type __FILE = _iobuf;
47
48#[allow(clippy::upper_case_acronyms)]
49pub type FILE = __FILE;
50
51pub type __tm = ();
52pub type _rand48 = ();
53pub type _misc_reent = ();
54pub type __locale_t = ();
55pub type _mprec = ();
56pub type _on_exit_args = ();
57
58#[repr(C)]
59#[derive(Copy, Clone)]
60pub struct _atexit {
61 pub _next: *mut _atexit,
62 pub _ind: c_int,
63 pub _fns: [Option<unsafe extern "C" fn()>; 32],
64 pub _on_exit_args_ptr: *mut _on_exit_args,
65}
66
67#[repr(C)]
68#[derive(Copy, Clone)]
69pub struct _glue {
70 pub _next: *mut _glue,
71 pub _niobs: c_int,
72 pub _iobs: *mut __FILE,
73}
74
75#[repr(C)]
77#[derive(Copy, Clone)]
78pub struct _reent {
79 _errno: c_int,
81 _stdin: *mut __FILE,
82 _stdout: *mut __FILE,
83 _stderr: *mut __FILE,
84 _inc: c_int,
85 _emergency: *mut c_char,
86 _reserved_0: c_int,
87 _reserved_1: c_int,
88 _locale: *mut __locale_t,
89 _mp: *mut _mprec,
90 __cleanup: Option<unsafe extern "C" fn(arg1: *mut _reent)>,
91 _gamma_signgam: c_int,
92 _cvtlen: c_int,
93 _cvtbuf: *mut c_char,
94 _r48: *mut _rand48,
95 _localtime_buf: *mut __tm,
96 _asctime_buf: *mut c_char,
97 _sig_func: *mut Option<unsafe extern "C" fn(arg1: c_int)>,
98 _reserved_6: *mut _atexit,
99 _reserved_7: _atexit,
100 _reserved_8: _glue,
101 __sf: *mut __FILE,
102 _misc: *mut _misc_reent,
103 _signal_buf: *mut c_char,
104}
105
106pub type va_list = *mut ::core::ffi::c_char;
107
108#[allow(clippy::missing_transmute_annotations)]
110pub static mut SYSCALL_TABLE: chip_specific::syscall_stub_table = unsafe {
111 chip_specific::syscall_stub_table {
112 __getreent: Some(core::mem::transmute(not_implemented as *const fn())),
113 _malloc_r: Some(core::mem::transmute(not_implemented as *const fn())),
114 _free_r: Some(core::mem::transmute(not_implemented as *const fn())),
115 _realloc_r: Some(core::mem::transmute(not_implemented as *const fn())),
116 _calloc_r: Some(core::mem::transmute(not_implemented as *const fn())),
117 _abort: Some(abort_wrapper),
118 _system_r: Some(core::mem::transmute(not_implemented as *const fn())),
119 _rename_r: Some(core::mem::transmute(not_implemented as *const fn())),
120 _times_r: Some(core::mem::transmute(not_implemented as *const fn())),
121 _gettimeofday_r: Some(core::mem::transmute(not_implemented as *const fn())),
122 _raise_r: Some(core::mem::transmute(not_implemented as *const fn())),
123 _unlink_r: Some(core::mem::transmute(not_implemented as *const fn())),
124 _link_r: Some(core::mem::transmute(not_implemented as *const fn())),
125 _stat_r: Some(core::mem::transmute(not_implemented as *const fn())),
126 _fstat_r: Some(core::mem::transmute(not_implemented as *const fn())),
127 _sbrk_r: Some(core::mem::transmute(not_implemented as *const fn())),
128 _getpid_r: Some(core::mem::transmute(not_implemented as *const fn())),
129 _kill_r: Some(core::mem::transmute(not_implemented as *const fn())),
130 _exit_r: Some(core::mem::transmute(not_implemented as *const fn())),
131 _close_r: Some(core::mem::transmute(not_implemented as *const fn())),
132 _open_r: Some(core::mem::transmute(not_implemented as *const fn())),
133 _write_r: Some(core::mem::transmute(not_implemented as *const fn())),
134 _lseek_r: Some(core::mem::transmute(not_implemented as *const fn())),
135 _read_r: Some(core::mem::transmute(not_implemented as *const fn())),
136 _retarget_lock_init: Some(core::mem::transmute(not_implemented as *const fn())),
137 _retarget_lock_init_recursive: Some(core::mem::transmute(not_implemented as *const fn())),
138 _retarget_lock_close: Some(core::mem::transmute(not_implemented as *const fn())),
139 _retarget_lock_close_recursive: Some(core::mem::transmute(not_implemented as *const fn())),
140 _retarget_lock_acquire: Some(core::mem::transmute(not_implemented as *const fn())),
141 _retarget_lock_acquire_recursive: Some(core::mem::transmute(
142 not_implemented as *const fn(),
143 )),
144 _retarget_lock_try_acquire: Some(core::mem::transmute(not_implemented as *const fn())),
145 _retarget_lock_try_acquire_recursive: Some(core::mem::transmute(
146 not_implemented as *const fn(),
147 )),
148 _retarget_lock_release: Some(core::mem::transmute(not_implemented as *const fn())),
149 _retarget_lock_release_recursive: Some(core::mem::transmute(
150 not_implemented as *const fn(),
151 )),
152 _printf_float: Some(core::mem::transmute(not_implemented as *const fn())),
153 _scanf_float: Some(core::mem::transmute(not_implemented as *const fn())),
154 __assert_func: Some(super::__assert_func),
155 __sinit: Some(core::mem::transmute(not_implemented as *const fn())),
156 _cleanup_r: Some(core::mem::transmute(not_implemented as *const fn())),
157 }
158};
159
160unsafe extern "C" fn not_implemented() {
161 panic!("Function called via syscall table is not implemented!");
162}
163
164unsafe extern "C" fn abort_wrapper() {
165 panic!("Abort called from ROM code!");
166}
167
168#[allow(clippy::missing_transmute_annotations)]
173pub unsafe fn init_syscall_table() {
174 cfg_select! {
175 esp32 => {
176 unsafe extern "C" {
177 static mut syscall_table_ptr_pro: *const chip_specific::syscall_stub_table;
178 static mut syscall_table_ptr_app: *const chip_specific::syscall_stub_table;
179 }
180 unsafe {
181 syscall_table_ptr_pro = &raw const SYSCALL_TABLE;
182 syscall_table_ptr_app = &raw const SYSCALL_TABLE;
183 }
184 }
185 esp32s2 => {
186 unsafe extern "C" {
187 static mut syscall_table_ptr_pro: *const chip_specific::syscall_stub_table;
188 }
189 unsafe {
190 syscall_table_ptr_pro = &raw const SYSCALL_TABLE;
191 }
192 }
193 _ => {
194 unsafe extern "C" {
195 static mut syscall_table_ptr: *const chip_specific::syscall_stub_table;
196 }
197 unsafe {
198 syscall_table_ptr = &raw const SYSCALL_TABLE;
199 }
200 }
201 };
202}