nuttx/include
hujun5 61caf7cce9 types: on some arch, execution speed can be accelerated
in arm64 Let's see how the following code looks like in assembly

volatile cpu_set_t g_cpu_set;
cpu_set_t set_cpu_set_t_set(int cpu) {
  g_cpu_set &= ~(1 << cpu);
  return g_cpu_set;
}

when
typedef volatile uint32_t cpu_set_t;
Dump of assembler code for function set_cpu_set_t_set:
   0x0000000040288570 <+0>:	adrp	x2, 0x403ce000 <g_irqvector+1160>
   0x0000000040288574 <+4>:	ldr	w3, [x2, #2368]
   0x0000000040288578 <+8>:	mov	w1, #0x1
   0x000000004028857c <+12>:	lsl	w1, w1, w0
   0x0000000040288580 <+16>:	bic	w1, w3, w1
   0x0000000040288584 <+20>:	str	w1, [x2, #2368]
   0x0000000040288588 <+24>:	ldr	w0, [x2, #2368]
   0x000000004028858c <+28>:	ret

when
typedef volatile uint8_t cpu_set_t;
Dump of assembler code for function set_cpu_set_t_set:
   0x000000004028856c <+0>:	adrp	x2, 0x403ce000 <g_irqvector+1192>
   0x0000000040288570 <+4>:	ldrb	w3, [x2, #2336]
   0x0000000040288574 <+8>:	mov	w1, #0x1
   0x0000000040288578 <+12>:	and	w3, w3, #0xff           // At this time, there will be one more instruction
   0x000000004028857c <+16>:	lsl	w1, w1, w0
   0x0000000040288580 <+20>:	bic	w1, w3, w1
   0x0000000040288584 <+24>:	strb	w1, [x2, #2336]
   0x0000000040288588 <+28>:	ldrb	w0, [x2, #2336]
   0x000000004028858c <+32>:	ret

test:
We can use qemu for testing.

compiling
make distclean -j20; ./tools/configure.sh -l qemu-armv8a:nsh_smp ;make -j20
running
qemu-system-aarch64 -cpu cortex-a53 -smp 4 -nographic -machine virt,virtualization=on,gic-version=3 -net none -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -kernel ./nuttx
Signed-off-by: hujun5 <hujun5@xiaomi.com>
2024-05-22 19:10:03 +08:00
..
android
arpa
crypto
cxx Add c symbols to std 2024-05-16 10:25:01 -03:00
net ioctl: add definitions related to ethtool 2023-11-03 22:37:50 +08:00
netinet Remove @ and % tag from all comments 2023-12-11 17:00:10 -03:00
netpacket net/netlink: Add RTM preifx notify support 2024-05-14 10:05:37 -03:00
nuttx nuttx kconfig: rename a few recently-added options 2024-05-21 01:11:44 +08:00
ssp
sys types: on some arch, execution speed can be accelerated 2024-05-22 19:10:03 +08:00
.gitignore .gitignore: add ignore 2024-03-14 22:47:55 +08:00
aio.h
alloca.h
assert.h include: When defining NDEBUG, assert will implement alignment standards 2024-05-17 10:18:16 -03:00
byteswap.h
ctype.h Add basic support for locales in order to C++ streams to build and work for simple cases (POSIX / C locale). 2024-04-29 17:34:10 +08:00
debug.h rpmsg/debug: add debug configs and macros 2024-02-15 19:53:55 -08:00
dirent.h
dlfcn.h
dsp.h
dspb16.h
elf32.h
elf64.h
elf.h arch/arm64: support relocate for aarch64 2023-10-30 18:20:22 +08:00
endian.h
err.h
errno.h
execinfo.h
fcntl.h
fixedmath.h
fnmatch.h
ftw.h
getopt.h
glob.h
grp.h
hex2bin.h
iconv.h
ifaddrs.h
inttypes.h libs/libc/inttypes: add support for imaxdiv 2024-04-23 10:26:48 -03:00
iso646.h
langinfo.h
libgen.h
libintl.h
limits.h
locale.h
lzf.h
malloc.h mm: record the maximum system memory usage 2023-11-09 09:08:49 +08:00
mqueue.h
netdb.h
nl_types.h
nxflat.h
obstack.h
poll.h
pthread.h
pty.h
pwd.h
regex.h
resolv.h
sched.h sched.h: add empty realize when NO CONFIG_SMP 2024-03-05 17:50:58 +08:00
search.h hsearch_r: add DELETE action 2024-02-21 13:29:36 -03:00
semaphore.h
signal.h sigaction: Expand si_user for non-kernel signals 2023-11-22 08:00:43 -08:00
spawn.h libs/libc/spawn: Add minimal implementation for posix_spawnattr_destory. 2023-10-31 13:42:00 +08:00
stdbool.h
stddef.h
stdint.h
stdio.h libc: add support for open_memstream 2023-11-29 02:13:19 -08:00
stdlib.h libc: add support for reallocarray 2024-04-17 11:36:39 -03:00
stdnoreturn.h
string.h
strings.h libc/lib_bzero:Add bzero prototype. 2024-05-07 14:59:05 +02:00
syscall.h
syslog.h
termios.h
threads.h Fix typo in mtx_timedlock 2024-02-02 09:03:18 -08:00
time.h
unistd.h fs_lock:Implementing file locks 2024-02-21 13:29:36 -03:00
utime.h
uuid.h
wchar.h libs/libc/wchar: add ungetwc implementation 2023-12-17 01:39:06 -08:00
wctype.h