<?xml version='1.0' encoding='UTF-8' standalone='no'?> <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16"> <compounddef id="init_2start_8S" kind="file" language="C++"> <compoundname>start.S</compoundname> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <programlisting> <codeline><highlight class="normal">/*-</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>Copyright<sp/>(c)<sp/>2002-2018<sp/>The<sp/>UbixOS<sp/>Project.</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>All<sp/>rights<sp/>reserved.</highlight></codeline> <codeline><highlight class="normal"><sp/>*</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>This<sp/>was<sp/>developed<sp/>by<sp/>Christopher<sp/>W.<sp/>Olsen<sp/>for<sp/>the<sp/>UbixOS<sp/>Project.</highlight></codeline> <codeline><highlight class="normal"><sp/>*</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>Redistribution<sp/>and<sp/>use<sp/>in<sp/>source<sp/>and<sp/>binary<sp/>forms,<sp/>with<sp/>or<sp/>without<sp/>modification,<sp/>are<sp/>permitted</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>provided<sp/>that<sp/>the<sp/>following<sp/>conditions<sp/>are<sp/>met:</highlight></codeline> <codeline><highlight class="normal"><sp/>*</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>1)<sp/>Redistributions<sp/>of<sp/>source<sp/>code<sp/>must<sp/>retain<sp/>the<sp/>above<sp/>copyright<sp/>notice,<sp/>this<sp/>list<sp/>of</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/>conditions,<sp/>the<sp/>following<sp/>disclaimer<sp/>and<sp/>the<sp/>list<sp/>of<sp/>authors.</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>2)<sp/>Redistributions<sp/>in<sp/>binary<sp/>form<sp/>must<sp/>reproduce<sp/>the<sp/>above<sp/>copyright<sp/>notice,<sp/>this<sp/>list<sp/>of</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/>conditions,<sp/>the<sp/>following<sp/>disclaimer<sp/>and<sp/>the<sp/>list<sp/>of<sp/>authors<sp/>in<sp/>the<sp/>documentation<sp/>and/or</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/>other<sp/>materials<sp/>provided<sp/>with<sp/>the<sp/>distribution.</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>3)<sp/>Neither<sp/>the<sp/>name<sp/>of<sp/>the<sp/>UbixOS<sp/>Project<sp/>nor<sp/>the<sp/>names<sp/>of<sp/>its<sp/>contributors<sp/>may<sp/>be<sp/>used<sp/>to</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/>endorse<sp/>or<sp/>promote<sp/>products<sp/>derived<sp/>from<sp/>this<sp/>software<sp/>without<sp/>specific<sp/>prior<sp/>written</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/>permission.</highlight></codeline> <codeline><highlight class="normal"><sp/>*</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>THIS<sp/>SOFTWARE<sp/>IS<sp/>PROVIDED<sp/>BY<sp/>THE<sp/>AUTHOR<sp/>AND<sp/>CONTRIBUTORS<sp/>"AS<sp/>IS"<sp/>AND<sp/>ANY<sp/>EXPRESS<sp/>OR<sp/>IMPLIED</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>WARRANTIES,<sp/>INCLUDING,<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO,<sp/>THE<sp/>IMPLIED<sp/>WARRANTIES<sp/>OF<sp/>MERCHANTABILITY<sp/>AND<sp/>FITNESS</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>FOR<sp/>A<sp/>PARTICULAR<sp/>PURPOSE<sp/>ARE<sp/>DISCLAIMED.<sp/>IN<sp/>NO<sp/>EVENT<sp/>SHALL<sp/>THE<sp/>COPYRIGHT<sp/>OWNER<sp/>OR<sp/>CONTRIBUTORS</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>BE<sp/>LIABLE<sp/>FOR<sp/>ANY<sp/>DIRECT,<sp/>INDIRECT,<sp/>INCIDENTAL,<sp/>SPECIAL,<sp/>EXEMPLARY,<sp/>OR<sp/>CONSEQUENTIAL<sp/>DAMAGES</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>(INCLUDING,<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO,<sp/>PROCUREMENT<sp/>OF<sp/>SUBSTITUTE<sp/>GOODS<sp/>OR<sp/>SERVICES;<sp/>LOSS<sp/>OF<sp/>USE,<sp/>DATA,</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>OR<sp/>PROFITS;<sp/>OR<sp/>BUSINESS<sp/>INTERRUPTION)<sp/>HOWEVER<sp/>CAUSED<sp/>AND<sp/>ON<sp/>ANY<sp/>THEORY<sp/>OF<sp/>LIABILITY,<sp/>WHETHER<sp/>IN</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>CONTRACT,<sp/>STRICT<sp/>LIABILITY,<sp/>OR<sp/>TORT<sp/>(INCLUDING<sp/>NEGLIGENCE<sp/>OR<sp/>OTHERWISE)<sp/>ARISING<sp/>IN<sp/>ANY<sp/>WAY<sp/>OUT</highlight></codeline> <codeline><highlight class="normal"><sp/>*<sp/>OF<sp/>THE<sp/>USE<sp/>OF<sp/>THIS<sp/>SOFTWARE,<sp/>EVEN<sp/>IF<sp/>ADVISED<sp/>OF<sp/>THE<sp/>POSSIBILITY<sp/>OF<sp/>SUCH<sp/>DAMAGE.</highlight></codeline> <codeline><highlight class="normal"><sp/>*/</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal">#define<sp/>BI_VERSION<sp/><sp/><sp/><sp/>0x0</highlight></codeline> <codeline><highlight class="normal">#define<sp/>BI_KERNELNAME<sp/>0x4</highlight></codeline> <codeline><highlight class="normal">#define<sp/>BI_ENDCOMMON<sp/><sp/>12</highlight></codeline> <codeline><highlight class="normal">#define<sp/>BI_SIZE<sp/><sp/><sp/><sp/><sp/><sp/><sp/>48</highlight></codeline> <codeline><highlight class="normal">#define<sp/>BOOTINFO_SIZE<sp/>135</highlight></codeline> <codeline><highlight class="normal">#define<sp/>RB_BOOTINFO<sp/><sp/><sp/><sp/><sp/>0x80000000<sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>have<sp/>`struct<sp/>bootinfo<sp/>*'<sp/>arg<sp/>*/</highlight></codeline> <codeline></codeline> <codeline></codeline> <codeline><highlight class="normal">.globl<sp/>_start</highlight></codeline> <codeline><highlight class="normal">.text</highlight></codeline> <codeline><highlight class="normal">.code32</highlight></codeline> <codeline><highlight class="normal">_start:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movw<sp/><sp/>$0x1234,0x472</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>pushl<sp/>%ebp</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movl<sp/><sp/>%esp,%ebp</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>pushl<sp/>$0x00000002</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>popfl</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/>/*<sp/>Clear<sp/>the<sp/>BSS<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movl<sp/><sp/>$(_end),%ecx</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movl<sp/><sp/>$(__bss_start),%edi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>subl<sp/><sp/>%edi,%ecx</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>xorl<sp/><sp/>%eax,%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>cld</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>rep</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>stosb</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/>/*<sp/>Fix<sp/>Up<sp/>GS/FS<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/>%dx,%ax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/>%ax,%fs</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/>%ax,%gs</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/>/*<sp/>Get<sp/>Boot<sp/>Args<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>call<sp/>get_bootargs</highlight></codeline> <codeline><highlight class="normal"><sp/></highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>/*<sp/>Load<sp/>GDT<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>lgdtl<sp/>(loadGDT)</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>$0x10,%eax<sp/></highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%ds</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%es</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%fs</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%gs</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%ss</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>$kStack,%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>addl<sp/><sp/>$0x1000,%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%esp,%edx</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%esp</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>%eax,%ebp<sp/></highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>$0x18,%ax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>lldt<sp/><sp/>%ax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/><sp/>$0x20,%ax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>ltr<sp/><sp/><sp/>%ax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>ljmp<sp/><sp/>$0x08,$start_next</highlight></codeline> <codeline><highlight class="normal">start_next:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>call<sp/>vmm_init</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>pushl<sp/>%esp</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/>%esp,%ebp</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/>$0xFFFFFFFF,%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>mov<sp/><sp/>%eax,<sp/>%esp</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>pushl<sp/>$0xDEAD;<sp/>//<sp/>Stack</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>pushl<sp/>$0xBEEF;<sp/>//<sp/>Marker</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>subl<sp/><sp/>$0xE,%esp;</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>call<sp/>kmain</highlight></codeline> <codeline><highlight class="normal">get_bootargs:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>/*</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>The<sp/>old<sp/>style<sp/>disk<sp/>boot<sp/>blocks<sp/>fake<sp/>a<sp/>frame<sp/>on<sp/>the<sp/>stack<sp/>and</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>did<sp/>an<sp/>lret<sp/>to<sp/>get<sp/>here.<sp/><sp/>The<sp/>frame<sp/>on<sp/>the<sp/>stack<sp/>has<sp/>a<sp/>return</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>address<sp/>of<sp/>0.</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*/</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/>cmpl<sp/><sp/><sp/><sp/>$0,4(%ebp)</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>je<sp/><sp/><sp/><sp/><sp/><sp/>old_boot</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>/*</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>We<sp/>have<sp/>some<sp/>form<sp/>of<sp/>return<sp/>address,<sp/>so<sp/>this<sp/>is<sp/>either<sp/>the</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>old<sp/>diskless<sp/>netboot<sp/>code,<sp/>or<sp/>the<sp/>new<sp/>uniform<sp/>code.<sp/><sp/>That<sp/>can</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>be<sp/>detected<sp/>by<sp/>looking<sp/>at<sp/>the<sp/>5th<sp/>argument,<sp/>if<sp/>it<sp/>is<sp/>0</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>we<sp/>are<sp/>being<sp/>booted<sp/>by<sp/>the<sp/>new<sp/>uniform<sp/>boot<sp/>code.</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>cmpl<sp/><sp/><sp/><sp/>$0,24(%ebp)</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>je<sp/><sp/><sp/><sp/><sp/><sp/>new_boot</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/>hlt</highlight></codeline> <codeline><highlight class="normal">new_boot:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movl<sp/><sp/><sp/><sp/>28(%ebp),%ebx<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>&bootinfo.version<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movl<sp/><sp/><sp/><sp/>BI_VERSION(%ebx),%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>cmpl<sp/><sp/><sp/><sp/>$1,%eax<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>We<sp/>only<sp/>understand<sp/>version<sp/>1<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>je<sp/><sp/><sp/><sp/><sp/><sp/>1f</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>movl<sp/><sp/><sp/><sp/>$1,%eax<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>Return<sp/>status<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>leave</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>/*</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>XXX<sp/>this<sp/>returns<sp/>to<sp/>our<sp/>caller's<sp/>caller<sp/>(as<sp/>is<sp/>required)<sp/>since</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>we<sp/>didn't<sp/>set<sp/>up<sp/>a<sp/>frame<sp/>and<sp/>our<sp/>caller<sp/>did.</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>hlt<sp/>/*<sp/>MrO<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>ret</highlight></codeline> <codeline><highlight class="normal">1:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/>/*</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*<sp/>If<sp/>we<sp/>have<sp/>a<sp/>kernelname<sp/>copy<sp/>it<sp/>in</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>BI_KERNELNAME(%ebx),%esi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cmpl<sp/><sp/><sp/><sp/>$0,%esi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>je<sp/><sp/><sp/><sp/><sp/><sp/>2f<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>No<sp/>kernelname<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>512,%ecx<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>Brute<sp/>force!!!<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>$_kernelname,%edi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cmpb<sp/><sp/><sp/><sp/>$'/',(%esi)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>Make<sp/>sure<sp/>it<sp/>starts<sp/>with<sp/>a<sp/>slash<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>je<sp/><sp/><sp/><sp/><sp/><sp/>1f</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movb<sp/><sp/><sp/><sp/>$'/',(%edi)</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>incl<sp/><sp/><sp/><sp/>%edi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>decl<sp/><sp/><sp/><sp/>%ecx</highlight></codeline> <codeline><highlight class="normal">1:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cld</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>rep</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movsb</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal">2:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>Determine<sp/>the<sp/>size<sp/>of<sp/>the<sp/>boot<sp/>loader's<sp/>copy<sp/>of<sp/>the<sp/>bootinfo</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>struct.<sp/><sp/>This<sp/>is<sp/>impossible<sp/>to<sp/>do<sp/>properly<sp/>because<sp/>old<sp/>versions</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>of<sp/>the<sp/>struct<sp/>don't<sp/>contain<sp/>a<sp/>size<sp/>field<sp/>and<sp/>there<sp/>are<sp/>2<sp/>old</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>versions<sp/>with<sp/>the<sp/>same<sp/>version<sp/>number.</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>$BI_ENDCOMMON,%ecx<sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>prepare<sp/>for<sp/>sizeless<sp/>version<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>testl<sp/><sp/><sp/>$RB_BOOTINFO,8(%ebp)<sp/><sp/><sp/><sp/>/*<sp/>bi_size<sp/>(and<sp/>bootinfo)<sp/>valid?<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>je<sp/><sp/><sp/><sp/><sp/><sp/>got_bi_size<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*<sp/>no,<sp/>sizeless<sp/>version<sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>BI_SIZE(%ebx),%ecx</highlight></codeline> <codeline><highlight class="normal">got_bi_size:</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>/*</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>Copy<sp/>the<sp/>common<sp/>part<sp/>of<sp/>the<sp/>bootinfo<sp/>struct</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>%ebx,%esi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>$_bootinfo,%edi</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cmpl<sp/><sp/><sp/><sp/>$BOOTINFO_SIZE,%ecx</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>jbe<sp/><sp/><sp/><sp/><sp/>got_common_bi_size</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>$BOOTINFO_SIZE,%ecx</highlight></codeline> <codeline><highlight class="normal">got_common_bi_size:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cld</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>rep</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movsb</highlight></codeline> <codeline><highlight class="normal">old_boot:</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>8(%ebp),%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>%eax,(_boothowto)</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>12(%ebp),%eax</highlight></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>movl<sp/><sp/><sp/><sp/>%eax,(_bootdev)</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ret</highlight></codeline> <codeline></codeline> <codeline><highlight class="normal">.data</highlight></codeline> <codeline><highlight class="normal">.comm<sp/>kStack,0x1000</highlight></codeline> </programlisting> <location file="C:/Dev/git/UbixOS/sys/init/start.S"/> </compounddef> </doxygen>