aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/libc
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-06-23 07:42:16 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-06-23 07:42:16 +0800
commit7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc (patch)
treee98c627e1da5c764563774b89b0c06d7ac5ad0a4 /libpsn00b/libc
parentae9e545c3ed33d39ce21ae13ceb8337fa34901b8 (diff)
downloadpsn00bsdk-7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc.tar.gz
LibPSn00b officially v0.10b, added psxsio library, better DrawSync() and VSync(), better reference manual.
Diffstat (limited to 'libpsn00b/libc')
-rw-r--r--libpsn00b/libc/malloc.s46
-rw-r--r--libpsn00b/libc/memcmp.s8
-rw-r--r--libpsn00b/libc/memcpy.s6
-rw-r--r--libpsn00b/libc/memmove.s8
-rw-r--r--libpsn00b/libc/memset.s4
-rw-r--r--libpsn00b/libc/start.s4
6 files changed, 41 insertions, 35 deletions
diff --git a/libpsn00b/libc/malloc.s b/libpsn00b/libc/malloc.s
index 20e5371..fdb196d 100644
--- a/libpsn00b/libc/malloc.s
+++ b/libpsn00b/libc/malloc.s
@@ -52,7 +52,7 @@ malloc:
lw $a2, 0($a2)
sll $a0, 2
-.find_next:
+.Lfind_next:
move $a1, $a2
@@ -61,16 +61,16 @@ malloc:
subu $v0, $a2, $a1 # Compute space between current and next
- beqz $v1, .empty_block # Occupy empty block (if size = 0)
+ beqz $v1, .Lempty_block # Occupy empty block (if size = 0)
nop
- beqz $a2, .new_block # Allocate a new block (if no next)
+ beqz $a2, .Lnew_block # Allocate a new block (if no next)
nop
addiu $v0, -(ND_HSIZ*2) # Compute remaining space of block
subu $v0, $v1
- blt $v0, $a0, .find_next # Search for the next block if space is not big enough
+ blt $v0, $a0, .Lfind_next # Search for the next block if space is not big enough
nop
# Perform a block split using remaining space of current block
@@ -88,19 +88,19 @@ malloc:
jr $ra
addiu $v0, ND_HSIZ
-.empty_block: # Occupy an empty block
+.Lempty_block: # Occupy an empty block
- beqz $a2, .no_next # Skip size calculation if there's no next
+ beqz $a2, .Lno_next # Skip size calculation if there's no next
nop
addiu $v0, -ND_HSIZ
- blt $v0, $a0, .find_next
+ blt $v0, $a0, .Lfind_next
nop
- b .skip_space_check
+ b .Lskip_space_check
nop
-.no_next:
+.Lno_next:
la $v1, _malloc_addr # Check if there's enough space for a block
lw $v1, 0($v1)
@@ -111,16 +111,16 @@ malloc:
addu $v1, $a0
addiu $v1, ND_HSIZ
- bgt $v1, $v0, .no_space
+ bgt $v1, $v0, .Lno_space
nop
-.skip_space_check:
+.Lskip_space_check:
sw $a0, ND_SIZE($a1)
jr $ra # Return address
addiu $v0, $a1, ND_HSIZ
-.new_block: # Create a new block
+.Lnew_block: # Create a new block
addu $a2, $a1, $v1 # Compute address for new block
addiu $a2, ND_HSIZ
@@ -134,7 +134,7 @@ malloc:
addu $v1, $a0
addiu $v1, ND_HSIZ
- bgt $v1, $v0, .no_space # Reject if it exceeds specified size
+ bgt $v1, $v0, .Lno_space # Reject if it exceeds specified size
nop
sw $a1, ND_PREV($a2)
@@ -146,7 +146,8 @@ malloc:
jr $ra # Return address
addiu $v0, $a2, ND_HSIZ
-.no_space: # Return a null if no space can be found
+.Lno_space: # Return a null if no space can be found
+
jr $ra
move $v0, $0
@@ -168,10 +169,12 @@ calloc:
move $a0, $v0
mflo $a1
-.clear_loop:
+
+.Lclear_loop:
+
sw $0 , 0($a0)
addi $a1, 4
- bgtz $a1, .clear_loop
+ bgtz $a1, .Lclear_loop
addiu $a0, 4
lw $ra, 0($sp)
@@ -191,10 +194,10 @@ free:
lw $a1, ND_PREV($a0)
lw $a2, ND_NEXT($a0)
- beqz $a1, .is_start # Check if block is a starting block
+ beqz $a1, .Lis_start # Check if block is a starting block
nop
- beqz $a2, .is_end
+ beqz $a2, .Lis_end
nop
# Unlink
@@ -203,10 +206,13 @@ free:
jr $ra
sw $a1, ND_PREV($a2)
-.is_end: # Unlinks the ending block
+.Lis_end: # Unlinks the ending block
+
jr $ra
sw $0 , ND_NEXT($a1)
-.is_start: # Simply set size to 0 if starting block
+
+.Lis_start: # Simply set size to 0 if starting block
+
jr $ra
sw $0 , ND_SIZE($a0)
diff --git a/libpsn00b/libc/memcmp.s b/libpsn00b/libc/memcmp.s
index b8b495d..ec1e729 100644
--- a/libpsn00b/libc/memcmp.s
+++ b/libpsn00b/libc/memcmp.s
@@ -13,19 +13,19 @@
.global memcmp
.type memcmp, @function
memcmp:
- blez $a2, .exit
+ blez $a2, .Lexit
addi $a2, -1
lbu $v0, 0($a0)
lbu $v1, 0($a1)
addiu $a0, 1
- bne $v0, $v1, .mismatch
+ bne $v0, $v1, .Lmismatch
addiu $a1, 1
b memcmp
nop
-.mismatch:
+.Lmismatch:
jr $ra
sub $v0, $v1
-.exit:
+.Lexit:
jr $ra
move $v0, $0
\ No newline at end of file
diff --git a/libpsn00b/libc/memcpy.s b/libpsn00b/libc/memcpy.s
index e1a4e30..e3d1dd5 100644
--- a/libpsn00b/libc/memcpy.s
+++ b/libpsn00b/libc/memcpy.s
@@ -14,15 +14,15 @@
.type memcpy, @function
memcpy:
move $v0, $a0
-.loop:
+.Lloop:
blez $a2, .exit
addi $a2, -1
lbu $a3, 0($a1)
addiu $a1, 1
sb $a3, 0($a0)
- b .loop
+ b .Lloop
addiu $a0, 1
-.exit:
+.Lexit:
jr $ra
nop
\ No newline at end of file
diff --git a/libpsn00b/libc/memmove.s b/libpsn00b/libc/memmove.s
index 961e71f..d32e2ca 100644
--- a/libpsn00b/libc/memmove.s
+++ b/libpsn00b/libc/memmove.s
@@ -14,16 +14,16 @@ memmove:
addu $a1, $a2
addiu $a0, -1
addiu $a1, -1
-.loop:
- blez $a2, .exit
+.Lloop:
+ blez $a2, .Lexit
addi $a2, -1
lbu $v1, 0($a1)
addiu $a1, -1
sb $v1, 0($a0)
addiu $a0, -1
- b .loop
+ b .Lloop
nop
-.exit:
+.Lexit:
jr $ra
nop
\ No newline at end of file
diff --git a/libpsn00b/libc/memset.s b/libpsn00b/libc/memset.s
index f7d86b1..b3a3af3 100644
--- a/libpsn00b/libc/memset.s
+++ b/libpsn00b/libc/memset.s
@@ -14,12 +14,12 @@
.type memset,@function
memset:
move $v0, $a0
- blez $a2, .exit
+ blez $a2, .Lexit
addi $a2, -1
sb $a1, 0($a0)
b memset
addiu $a0, 1
-.exit:
+.Lexit:
jr $ra
nop
\ No newline at end of file
diff --git a/libpsn00b/libc/start.s b/libpsn00b/libc/start.s
index d08a2c7..2cf6ed0 100644
--- a/libpsn00b/libc/start.s
+++ b/libpsn00b/libc/start.s
@@ -15,9 +15,9 @@ _start:
la $a0, .bss # What are the CORRECT symbols for BSS start and end?
la $a1, _end
-.clear_bss:
+.Lclear_bss:
sb $0 , 0($a0)
- blt $a0, $a1, .clear_bss
+ blt $a0, $a1, .Lclear_bss
addiu $a0, 1
la $a0, _end+4 # Initialize heap for malloc (does not use BIOS maalloc)