Changeset b6b576c in mainline for arch/ia32/src/boot/boot.S


Ignore:
Timestamp:
2006-03-16T11:34:51Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d764ddc
Parents:
8dfef11
Message:

support for more init tasks
(might break some archs yet)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/src/boot/boot.S

    r8dfef11 rb6b576c  
    100100                movl %ecx, e801memorysize
    101101               
    102                 bt $3, %eax                                                             # mbi->flags[3] (mods_count, mods_addr valid)   
     102                bt $3, %eax                                                             # mbi->flags[3] (mods_count, mods_addr valid)
    103103                jc mods_valid
    104104                       
    105105                        xorl %ecx, %ecx
    106                         xorl %edx, %edx
    107                         jmp mods_invalid
     106                        movl %ecx, init
     107                        jmp mods_end
    108108               
    109109                mods_valid:
     110               
    110111                movl 20(%ebx), %ecx                                             # mbi->mods_count
     112                movl %ecx, init
     113               
    111114                cmpl $0, %ecx
    112                 je mods_invalid
     115                je mods_end
    113116               
    114117                movl 24(%ebx), %esi                                             # mbi->mods_addr
    115                 movl 0(%esi), %edx                                              # mods->mod_start
    116                 movl 4(%esi), %ecx                                              # mods->mod_end
    117                 subl %edx, %ecx
    118                 addl $0x80000000, %edx
    119                
    120                 mods_invalid:
    121                 movl %ecx, init_size
    122                 movl %edx, init_addr
     118                movl $init, %edi
     119               
     120                mods_loop:
     121               
     122                        movl 0(%esi), %edx                                      # mods->mod_start
     123                        addl $0x80000000, %edx
     124                        movl %edx, 4(%edi)
     125                       
     126                        movl 4(%esi), %edx
     127                        subl 0(%esi), %edx                                      # mods->mod_end - mods->mod_start
     128                        movl %edx, 8(%edi)
     129                       
     130                        addl $16, %esi
     131                        addl $8 , %edi
     132                       
     133                        loop mods_loop
     134                       
     135                mods_end:
    123136               
    124137                bt $6, %eax                                                             # mbi->flags[6] (mmap_length, mmap_addr valid) 
Note: See TracChangeset for help on using the changeset viewer.