Annotation of coherent/b/lib/libc/gen/malloc/malloc.s, revision 1.1.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.