summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/ppc/unified.S
blob: eb136a96bbce0a73ab941968ab70a934b5b243e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <dietfeatures.h>
#include "syscalls.h"

.text
.type exit,@function
.weak exit
exit:
.type _exit,@function
.global _exit
_exit:
	li	0,__NR_exit
.global __unified_syscall
__unified_syscall:
	sc
	bnslr+

.global error_unified_syscall
error_unified_syscall:
#ifdef WANT_THREAD_SAFE
	stwu	1,-16(1)
	mflr	0
	stw	0,20(1)
	stw	3,12(1)
	bl	__errno_location
	lwz	0,12(1)
	stw	0,0(3)
	lwz	0,20(1)
	mtlr	0
	addi	1,1,16
#else
	lis	9,errno@ha
	stw	3,errno@l(9)
#endif
	li	3,-1

/* here we go and "reuse" the return for weak-void functions */
#include "dietuglyweaks.h"

	blr