Annotation of coherent/b/lib/libc/gen/malloc/malloc.s, revision 1.1

1.1     ! root        1: /      module name malloc
        !             2:        .alignoff
        !             3: 
        !             4:        .text
        !             5: newarena:
        !             6:        enter   $4, $0
        !             7:        push    %esi
        !             8:        push    %edi
        !             9:        push    %ebx
        !            10:        cmpb    .L3, $0
        !            11:        je      .L4
        !            12:        subl    %eax, %eax
        !            13:        jmp     .L2
        !            14: .L4:
        !            15:        push    $0
        !            16:        call    sbrk
        !            17:        pop     %ecx
        !            18:        andl    %eax, $3
        !            19:        movl    -4(%ebp), %eax
        !            20:        orl     %eax, %eax
        !            21:        je      .L5
        !            22:        movl    %eax, $4
        !            23:        subl    %eax, -4(%ebp)
        !            24:        push    %eax
        !            25:        call    sbrk
        !            26:        pop     %ecx
        !            27:        cmpl    %eax, $-1
        !            28:        jne     .L5
        !            29:        movb    .L3, $1
        !            30:        jmp     .L20002
        !            31: .L5:
        !            32:        movl    %eax, 8(%ebp)
        !            33:        addl    %eax, $4104
        !            34:        decl    %eax
        !            35:        andl    %eax, $-4096
        !            36:        movl    -4(%ebp), %eax
        !            37:        cmpl    %eax, 8(%ebp)
        !            38:        jae     .L6
        !            39:        movl    %eax, 8(%ebp)
        !            40:        movl    -4(%ebp), %eax
        !            41: .L6:
        !            42:        movl    %eax, __a_first
        !            43:        movl    __a_scanp, %eax
        !            44: .L8:
        !            45:        push    -4(%ebp)
        !            46:        call    sbrk
        !            47:        pop     %ecx
        !            48:        movl    %ebx, %eax
        !            49:        cmpl    %eax, $-1
        !            50:        jne     .L7
        !            51:        movb    .L3, $1
        !            52:        movl    %eax, -4(%ebp)
        !            53:        cmpl    %eax, $256
        !            54:        jbe     .L20002
        !            55:        subl    -4(%ebp), $256
        !            56:        movl    %eax, -4(%ebp)
        !            57:        cmpl    %eax, $8
        !            58:        jae     .L8
        !            59:        movl    -4(%ebp), $8
        !            60:        jmp     .L8
        !            61: .L7:
        !            62:        cmpl    __a_top, $0
        !            63:        jne     .L11
        !            64:        movl    __a_count, $2
        !            65:        movl    %eax, %ebx
        !            66:        movl    %edi, %eax
        !            67:        movl    __a_scanp, %eax
        !            68:        movl    __a_first, %eax
        !            69:        jmp     .L12
        !            70: .L11:
        !            71:        cmpl    %ebx, __a_top
        !            72:        jne     .L13
        !            73:        subl    %ebx, $8
        !            74:        addl    -4(%ebp), $8
        !            75:        movl    %edi, 4(%ebx)
        !            76:        incl    __a_count
        !            77:        jmp     .L12
        !            78: .L13:
        !            79:        movl    %eax, __a_top
        !            80:        subl    %eax, $8
        !            81:        movl    %esi, %eax
        !            82:        movl    %edi, 4(%esi)
        !            83:        movl    4(%esi), %ebx
        !            84:        addl    __a_count, $2
        !            85: .L12:
        !            86:        movl    %eax, -4(%ebp)
        !            87:        subl    %eax, $8
        !            88:        orl     %eax, $1
        !            89:        movl    (%ebx), %eax
        !            90:        movl    %eax, %ebx
        !            91:        addl    %eax, -4(%ebp)
        !            92:        movl    __a_top, %eax
        !            93:        subl    %eax, $8
        !            94:        movl    %esi, %eax
        !            95:        movl    (%esi), $0
        !            96:        movl    4(%esi), %edi
        !            97: .L20002:
        !            98:        movl    %eax, $1
        !            99: .L2:
        !           100:        pop     %ebx
        !           101:        pop     %edi
        !           102:        pop     %esi
        !           103:        leave
        !           104:        ret
        !           105:        .align  4
        !           106:        .globl malloc
        !           107: malloc:
        !           108:        enter   $8, $0
        !           109:        push    %esi
        !           110:        push    %edi
        !           111:        push    %ebx
        !           112:        cmpl    8(%ebp), $0
        !           113:        jne     .L17
        !           114: .L20004:
        !           115:        subl    %eax, %eax
        !           116:        jmp     .L15
        !           117: .L17:
        !           118:        movl    %eax, 8(%ebp)
        !           119:        addl    %eax, $8
        !           120:        decl    %eax
        !           121:        andl    %eax, $-4
        !           122:        movl    -4(%ebp), %eax
        !           123:        cmpl    %eax, 8(%ebp)
        !           124:        jb      .L20004
        !           125: .L21:
        !           126:        subl    %esi, %esi
        !           127:        movl    %ebx, __a_scanp
        !           128:        movl    %eax, __a_count
        !           129:        movl    -8(%ebp), %eax
        !           130: .L23:
        !           131:        movl    %eax, -8(%ebp)
        !           132:        decl    -8(%ebp)
        !           133:        orl     %eax, %eax
        !           134:        je      .L22
        !           135:        movl    %ecx, (%ebx)
        !           136:        movl    %edi, %ecx
        !           137:        testl   %ecx, $1
        !           138:        jne     .L24
        !           139:        subl    %esi, %esi
        !           140: .L25:
        !           141:        orl     %edi, %edi
        !           142:        je      .L10001
        !           143:        movl    %eax, %edi
        !           144:        andl    %eax, $-2
        !           145:        addl    %eax, %ebx
        !           146:        jmp     .L10002
        !           147: .L10001:
        !           148:        movl    %eax, 4(%ebx)
        !           149: .L10002:
        !           150:        movl    %ebx, %eax
        !           151:        jmp     .L23
        !           152: .L22:
        !           153:        cmpl    %ebx, __a_scanp
        !           154:        je      .L20
        !           155:        push    $24
        !           156:        push    $.L16
        !           157:        push    $2
        !           158:        call    write
        !           159:        addl    %esp, $12
        !           160:        call    abort
        !           161: .L20:
        !           162:        push    -4(%ebp)
        !           163:        call    newarena
        !           164:        pop     %ecx
        !           165:        orl     %eax, %eax
        !           166:        jne     .L21
        !           167:        jmp     .L20004
        !           168: .L24:
        !           169:        orl     %esi, %esi
        !           170:        je      .L26
        !           171:        movl    %ebx, %esi
        !           172:        movl    %eax, %edi
        !           173:        andl    %eax, $-2
        !           174:        addl    (%ebx), %eax
        !           175:        movl    %eax, (%ebx)
        !           176:        movl    %edi, %eax
        !           177:        decl    __a_count
        !           178: .L26:
        !           179:        cmpl    %edi, -4(%ebp)
        !           180:        jae     .L27
        !           181:        movl    %esi, %ebx
        !           182:        jmp     .L25
        !           183: .L27:
        !           184:        movl    %eax, -4(%ebp)
        !           185:        subl    %edi, %eax
        !           186:        movl    %eax, %edi
        !           187:        cmpl    %eax, $8
        !           188:        jae     .L29
        !           189:        movl    %eax, (%ebx)
        !           190:        andl    %eax, $-2
        !           191:        movl    -4(%ebp), %eax
        !           192:        movl    (%ebx), %eax
        !           193:        movl    %eax, %ebx
        !           194:        addl    %eax, -4(%ebp)
        !           195:        movl    __a_scanp, %eax
        !           196:        jmp     .L30
        !           197: .L29:
        !           198:        movl    %eax, -4(%ebp)
        !           199:        movl    (%ebx), %eax
        !           200:        movl    %eax, %ebx
        !           201:        addl    %eax, -4(%ebp)
        !           202:        movl    __a_scanp, %eax
        !           203:        movl    %ecx, __a_scanp
        !           204:        movl    (%ecx), %edi
        !           205:        incl    __a_count
        !           206: .L30:
        !           207:        lea     %eax, 4(%ebx)
        !           208: .L15:
        !           209:        pop     %ebx
        !           210:        pop     %edi
        !           211:        pop     %esi
        !           212:        leave
        !           213:        ret
        !           214:        .align  4
        !           215:        .globl free
        !           216: free:
        !           217:        push    %ebp
        !           218:        movl    %ebp, %esp
        !           219:        push    %esi
        !           220:        push    %edi
        !           221:        push    %ebx
        !           222:        cmpl    8(%ebp), $0
        !           223:        je      .L32
        !           224:        movl    %eax, 8(%ebp)
        !           225:        subl    %eax, $4
        !           226:        movl    %ebx, %eax
        !           227:        movl    %esi, (%ebx)
        !           228:        cmpl    %esi, $2
        !           229:        jae     .L34
        !           230:        push    $22
        !           231:        push    $.L35
        !           232:        push    $2
        !           233:        call    write
        !           234:        addl    %esp, $12
        !           235:        call    abort
        !           236: .L34:
        !           237:        orl     (%ebx), $1
        !           238:        movl    %edi, %esi
        !           239:        andl    %edi, $-2
        !           240:        movl    %eax, %ebx
        !           241:        addl    %eax, %edi
        !           242:        cmpl    %eax, __a_scanp
        !           243:        je      .L10003
        !           244:        movl    %edi, __a_scanp
        !           245:        testl   (%edi), $1
        !           246:        jne     .L32
        !           247: .L10003:
        !           248:        movl    __a_scanp, %ebx
        !           249: .L32:
        !           250:        pop     %ebx
        !           251:        pop     %edi
        !           252:        pop     %esi
        !           253:        leave
        !           254:        ret
        !           255:        .align  4
        !           256:        .align  4
        !           257: 
        !           258:        .data
        !           259:        .align  4
        !           260:        .globl __a_scanp
        !           261: __a_scanp:
        !           262:        .long   0
        !           263:        .align  4
        !           264:        .globl __a_first
        !           265: __a_first:
        !           266:        .long   0
        !           267:        .align  4
        !           268:        .globl __a_top
        !           269: __a_top:
        !           270:        .long   0
        !           271:        .align  4
        !           272:        .globl __a_count
        !           273: __a_count:
        !           274:        .long   0
        !           275:        .align  1
        !           276: .L3:
        !           277:        .byte   0
        !           278:        .align  1
        !           279: .L16:
        !           280:        .byte   66
        !           281:        .byte   97
        !           282:        .byte   100
        !           283:        .byte   32
        !           284:        .byte   112
        !           285:        .byte   111
        !           286:        .byte   105
        !           287:        .byte   110
        !           288:        .byte   116
        !           289:        .byte   101
        !           290:        .byte   114
        !           291:        .byte   32
        !           292:        .byte   105
        !           293:        .byte   110
        !           294:        .byte   32
        !           295:        .byte   109
        !           296:        .byte   97
        !           297:        .byte   108
        !           298:        .byte   108
        !           299:        .byte   111
        !           300:        .byte   99
        !           301:        .byte   46
        !           302:        .byte   13
        !           303:        .byte   10
        !           304:        .byte   0
        !           305:        .align  1
        !           306: .L35:
        !           307:        .byte   66
        !           308:        .byte   97
        !           309:        .byte   100
        !           310:        .byte   32
        !           311:        .byte   112
        !           312:        .byte   111
        !           313:        .byte   105
        !           314:        .byte   110
        !           315:        .byte   116
        !           316:        .byte   101
        !           317:        .byte   114
        !           318:        .byte   32
        !           319:        .byte   105
        !           320:        .byte   110
        !           321:        .byte   32
        !           322:        .byte   102
        !           323:        .byte   114
        !           324:        .byte   101
        !           325:        .byte   101
        !           326:        .byte   46
        !           327:        .byte   13
        !           328:        .byte   10
        !           329:        .byte   0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.