History

Use arm assembler in lib dir

herman ten brugge committed 5 years ago

Commit b40a88e1 parent bc6c0c33 files · +9 −38Browse files

Unified · Split

3 files
  1. lib/alloca-arm.S +0 −7
  2. lib/armflush.c +7 −16
  3. lib/fetch_and_add_arm.S +2 −15
lib/alloca-arm.S+0−7
@@ -3,15 +3,8 @@ · 2 unmodified lines
3 .global alloca3 .global alloca
4 .type alloca, %function4 .type alloca, %function
5alloca:5alloca:
6#ifdef __TINYC__
7 .int 0xe060d00d
8 .int 0xe3cdd007
9 .int 0xe1a0000d
10 .int 0xe1a0f00e
11#else
12 rsb sp, r0, sp6 rsb sp, r0, sp
13 bic sp, sp, #77 bic sp, sp, #7
14 mov r0, sp8 mov r0, sp
15 mov pc, lr9 mov pc, lr
16#endif
17 .size alloca, .-alloca10 .size alloca, .-alloca
lib/armflush.c+7−16
@@ -13,13 +13,13 @@ unsigned _tccsyscall(unsigned syscall_nr, ...); · 12 unmodified lines
13__asm__(13__asm__(
14 ".global _tccsyscall\n"14 ".global _tccsyscall\n"
15 "_tccsyscall:\n"15 "_tccsyscall:\n"
16 ".int 0xe92d4080\n" // push {r7, lr}16 "push {r7, lr}\n\t"
17 ".int 0xe1a07000\n" // mov r7, r017 "mov r7, r0\n\t"
18 ".int 0xe1a00001\n" // mov r0, r118 "mov r0, r1\n\t"
19 ".int 0xe1a01002\n" // mov r1, r219 "mov r1, r2\n\t"
20 ".int 0xe1a02003\n" // mov r2, r320 "mov r2, r3\n\t"
21 ".int 0xef000000\n" // svc 0x0000000021 "svc #0\n\t"
22 ".int 0xe8bd8080\n" // pop {r7, pc}22 "pop {r7, pc}"
23 );23 );
24 24
25/* from unistd.h: */25/* from unistd.h: */
@@ -47,14 +47,5 @@ void __clear_cache(void *beginning, void *end) · 21 unmodified lines
47{47{
48/* __ARM_NR_cacheflush is kernel private and should not be used in user space.48/* __ARM_NR_cacheflush is kernel private and should not be used in user space.
49 * However, there is no ARM asm parser in tcc so we use it for now */49 * However, there is no ARM asm parser in tcc so we use it for now */
50#if 1
51 syscall(__ARM_NR_cacheflush, beginning, end, 0);50 syscall(__ARM_NR_cacheflush, beginning, end, 0);
52#else
53 __asm__ ("push {r7}\n\t"
54 "mov r7, #0xf0002\n\t"
55 "mov r2, #0\n\t"
56 "swi 0\n\t"
57 "pop {r7}\n\t"
58 "ret");
59#endif
60}51}
lib/fetch_and_add_arm.S+2−15
@@ -3,26 +3,13 @@ · 2 unmodified lines
3 .global fetch_and_add_arm3 .global fetch_and_add_arm
4 .type fetch_and_add_arm, %function4 .type fetch_and_add_arm, %function
5fetch_and_add_arm:5fetch_and_add_arm:
6#ifdef __TINYC__6 mcr p15, #0, r0, c7, c10, #5
7 .int 0xee070fba
8 .int 0xe1903f9f
9 .int 0xe0833001
10 .int 0xe1802f93
11 .int 0xe3520000
12 .int 0x1afffffa
13 .int 0xee070fba
14 .int 0xe12fff1e
15#else
16 .arch armv6
17
18 mcr p15, 0, r0, c7, c10, 5
19.L0:7.L0:
20 ldrex r3, [r0]8 ldrex r3, [r0]
21 add r3, r3, r19 add r3, r3, r1
22 strex r2, r3, [r0]10 strex r2, r3, [r0]
23 cmp r2, #011 cmp r2, #0
24 bne .L012 bne .L0
25 mcr p15, 0, r0, c7, c10, 513 mcr p15, #0, r0, c7, c10, #5
26 bx lr14 bx lr
27#endif
28 .size fetch_and_add_arm, .-fetch_and_add_arm15 .size fetch_and_add_arm, .-fetch_and_add_arm

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t