summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common/mbstring.s
blob: 559037dec69bc80f9bc31005908d2cc572c1bbb2 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global mbtowc
mbtowc:
/* 801CA13C 001C5D9C  3C C0 80 42 */	lis r6, lbl_80422D48@ha
/* 801CA140 001C5DA0  38 C6 2D 48 */	addi r6, r6, lbl_80422D48@l
/* 801CA144 001C5DA4  80 C6 00 38 */	lwz r6, 0x38(r6)
/* 801CA148 001C5DA8  81 86 00 20 */	lwz r12, 0x20(r6)
/* 801CA14C 001C5DAC  7D 89 03 A6 */	mtctr r12
/* 801CA150 001C5DB0  4E 80 04 20 */	bctr

.global __mbtowc_noconv
__mbtowc_noconv:
/* 801CA154 001C5DB4  2C 04 00 00 */	cmpwi r4, 0
/* 801CA158 001C5DB8  40 82 00 0C */	bne lbl_801CA164
/* 801CA15C 001C5DBC  38 60 00 00 */	li r3, 0
/* 801CA160 001C5DC0  4E 80 00 20 */	blr
lbl_801CA164:
/* 801CA164 001C5DC4  2C 05 00 00 */	cmpwi r5, 0
/* 801CA168 001C5DC8  40 82 00 0C */	bne lbl_801CA174
/* 801CA16C 001C5DCC  38 60 FF FF */	li r3, -1
/* 801CA170 001C5DD0  4E 80 00 20 */	blr
lbl_801CA174:
/* 801CA174 001C5DD4  2C 03 00 00 */	cmpwi r3, 0
/* 801CA178 001C5DD8  41 82 00 0C */	beq lbl_801CA184
/* 801CA17C 001C5DDC  88 04 00 00 */	lbz r0, 0(r4)
/* 801CA180 001C5DE0  B0 03 00 00 */	sth r0, 0(r3)
lbl_801CA184:
/* 801CA184 001C5DE4  88 04 00 00 */	lbz r0, 0(r4)
/* 801CA188 001C5DE8  7C 00 07 75 */	extsb. r0, r0
/* 801CA18C 001C5DEC  40 82 00 0C */	bne lbl_801CA198
/* 801CA190 001C5DF0  38 60 00 00 */	li r3, 0
/* 801CA194 001C5DF4  4E 80 00 20 */	blr
lbl_801CA198:
/* 801CA198 001C5DF8  38 60 00 01 */	li r3, 1
/* 801CA19C 001C5DFC  4E 80 00 20 */	blr

.global __wctomb_noconv
__wctomb_noconv:
/* 801CA1A0 001C5E00  2C 03 00 00 */	cmpwi r3, 0
/* 801CA1A4 001C5E04  40 82 00 0C */	bne lbl_801CA1B0
/* 801CA1A8 001C5E08  38 60 00 00 */	li r3, 0
/* 801CA1AC 001C5E0C  4E 80 00 20 */	blr
lbl_801CA1B0:
/* 801CA1B0 001C5E10  98 83 00 00 */	stb r4, 0(r3)
/* 801CA1B4 001C5E14  38 60 00 01 */	li r3, 1
/* 801CA1B8 001C5E18  4E 80 00 20 */	blr

.global wcstombs
wcstombs:
/* 801CA1BC 001C5E1C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801CA1C0 001C5E20  7C 08 02 A6 */	mflr r0
/* 801CA1C4 001C5E24  2C 03 00 00 */	cmpwi r3, 0
/* 801CA1C8 001C5E28  90 01 00 34 */	stw r0, 0x34(r1)
/* 801CA1CC 001C5E2C  BF 41 00 18 */	stmw r26, 0x18(r1)
/* 801CA1D0 001C5E30  7C 7A 1B 78 */	mr r26, r3
/* 801CA1D4 001C5E34  7C BB 2B 78 */	mr r27, r5
/* 801CA1D8 001C5E38  3B A0 00 00 */	li r29, 0
/* 801CA1DC 001C5E3C  41 82 00 0C */	beq lbl_801CA1E8
/* 801CA1E0 001C5E40  2C 04 00 00 */	cmpwi r4, 0
/* 801CA1E4 001C5E44  40 82 00 0C */	bne lbl_801CA1F0
lbl_801CA1E8:
/* 801CA1E8 001C5E48  38 60 00 00 */	li r3, 0
/* 801CA1EC 001C5E4C  48 00 00 74 */	b lbl_801CA260
lbl_801CA1F0:
/* 801CA1F0 001C5E50  3F E0 80 42 */	lis r31, lbl_80422D48@ha
/* 801CA1F4 001C5E54  7C 9C 23 78 */	mr r28, r4
/* 801CA1F8 001C5E58  3B FF 2D 48 */	addi r31, r31, lbl_80422D48@l
/* 801CA1FC 001C5E5C  48 00 00 58 */	b lbl_801CA254
lbl_801CA200:
/* 801CA200 001C5E60  A0 9C 00 00 */	lhz r4, 0(r28)
/* 801CA204 001C5E64  2C 04 00 00 */	cmpwi r4, 0
/* 801CA208 001C5E68  40 82 00 10 */	bne lbl_801CA218
/* 801CA20C 001C5E6C  38 00 00 00 */	li r0, 0
/* 801CA210 001C5E70  7C 1A E9 AE */	stbx r0, r26, r29
/* 801CA214 001C5E74  48 00 00 48 */	b lbl_801CA25C
lbl_801CA218:
/* 801CA218 001C5E78  80 BF 00 38 */	lwz r5, 0x38(r31)
/* 801CA21C 001C5E7C  38 61 00 08 */	addi r3, r1, 8
/* 801CA220 001C5E80  81 85 00 24 */	lwz r12, 0x24(r5)
/* 801CA224 001C5E84  7D 89 03 A6 */	mtctr r12
/* 801CA228 001C5E88  3B 9C 00 02 */	addi r28, r28, 2
/* 801CA22C 001C5E8C  4E 80 04 21 */	bctrl
/* 801CA230 001C5E90  7C 1D 1A 14 */	add r0, r29, r3
/* 801CA234 001C5E94  7C 7E 1B 78 */	mr r30, r3
/* 801CA238 001C5E98  7C 00 D8 40 */	cmplw r0, r27
/* 801CA23C 001C5E9C  41 81 00 20 */	bgt lbl_801CA25C
/* 801CA240 001C5EA0  7F C5 F3 78 */	mr r5, r30
/* 801CA244 001C5EA4  7C 7A EA 14 */	add r3, r26, r29
/* 801CA248 001C5EA8  38 81 00 08 */	addi r4, r1, 8
/* 801CA24C 001C5EAC  48 00 41 45 */	bl strncpy
/* 801CA250 001C5EB0  7F BD F2 14 */	add r29, r29, r30
lbl_801CA254:
/* 801CA254 001C5EB4  7C 1D D8 40 */	cmplw r29, r27
/* 801CA258 001C5EB8  40 81 FF A8 */	ble lbl_801CA200
lbl_801CA25C:
/* 801CA25C 001C5EBC  7F A3 EB 78 */	mr r3, r29
lbl_801CA260:
/* 801CA260 001C5EC0  BB 41 00 18 */	lmw r26, 0x18(r1)
/* 801CA264 001C5EC4  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801CA268 001C5EC8  7C 08 03 A6 */	mtlr r0
/* 801CA26C 001C5ECC  38 21 00 30 */	addi r1, r1, 0x30
/* 801CA270 001C5ED0  4E 80 00 20 */	blr