diff --git a/stdlib.asm b/stdlib.asm index 6548bc6..f37045b 100644 --- a/stdlib.asm +++ b/stdlib.asm @@ -778,6 +778,40 @@ ret stx n creturn 2:n end +**************************************************************** +* +* size_t memalignment(const void *p) +* +* Inputs: +* p - a pointer +* +* Outputs: +* The maximum alignment satisfied by p. +* +**************************************************************** +* +memalignment start + + csubroutine (4:p) + + lda p compute alignment = p & -p + beq lb1 + eor #$ffff + inc a + and p + sta p + stz p+2 + bra ret + +lb1 lda p+2 + eor #$ffff + inc a + and p+2 + sta p+2 + +ret creturn 4:p + end + **************************************************************** * * void qsort(base, count, size, compar)