Newer
Older
ubix2 / doc / html / smp_8c.html
@reddawg reddawg on 5 Dec 2006 38 KB More syscalls implimented
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>UbixOS V2: src/sys/kernel/smp.c File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
    <li>
      <form action="search.php" method="get">
        <table cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
          </tr>
        </table>
      </form>
    </li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="dir_897b6a2d7bab147dd1db58381aad3984.html">src</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_832905b1f7f5feaf61a306b40c0ac817.html">sys</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_7efffd2b1fae7bb6f2aa85845c863494.html">kernel</a></div>
<h1>smp.c File Reference</h1><code>#include &lt;<a class="el" href="smp_8h-source.html">ubixos/smp.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="spinlock_8h-source.html">ubixos/spinlock.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="kpanic_8h-source.html">ubixos/kpanic.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="kprintf_8h-source.html">lib/kprintf.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="lib_2string_8h-source.html">lib/string.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="io_8h-source.html">sys/io.h</a>&gt;</code><br>

<p>
<a href="smp_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgdt__descr.html">gdt_descr</a></td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#e4dc28abba9d6b02a779ca1b8ffecd98">ap_trampoline_end</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#f4f760b6cb0a871253009bb20d70657d">ap_trampoline_start</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#70e557cb01aee676855cee05b0769288">apicMagic</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#98935271c68a482c194d4c784d814ddd">apicRead</a> (address)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#ab4a831897afae67446bf78c88123749">apicWrite</a> (unsigned int address, unsigned int data)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#8325315e2d1f564d9777ebd849c3296c">asm</a> (&quot;.globl cpuid            \n&quot;&quot;cpuid:                  \n&quot;&quot;  pushl   %<a class="el" href="ap-boot_8S.html#1c50f544178eb7e0af39bd078c5a986f">ebx</a>          \n&quot;&quot;  pushl   %<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>          \n&quot;&quot;  movl    12(%<a class="el" href="start_8S.html#fba1069006eb01caca2f78a33f379594">esp</a>),%<a class="el" href="sys__call__new_8S.html#e746cb10fae7ebdc395c8d0fd6caa393">eax</a> \n&quot;&quot;  movl    16(%<a class="el" href="start_8S.html#fba1069006eb01caca2f78a33f379594">esp</a>),%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a> \n&quot;&quot;  cpuid                 \n&quot;&quot;  movl    %<a class="el" href="sys__call__new_8S.html#e746cb10fae7ebdc395c8d0fd6caa393">eax</a>,0(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)  \n&quot;&quot;  movl    %<a class="el" href="ap-boot_8S.html#1c50f544178eb7e0af39bd078c5a986f">ebx</a>,4(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)  \n&quot;&quot;  movl    %ecx,8(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)  \n&quot;&quot;  movl    %<a class="el" href="timer_8S.html#aa1f83238047e62298e33bed5682d71c">edx</a>,12(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>) \n&quot;&quot;  popl    %<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>          \n&quot;&quot;  popl    %<a class="el" href="ap-boot_8S.html#1c50f544178eb7e0af39bd078c5a986f">ebx</a>          \n&quot;&quot;  ret                   \n&quot;)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#c7cb5b4b2fbc61966a6dfc8044a7b800">c_ap_boot</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#66c37e11ba7abfcafc63146553b2cd16">cpu0_thread</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#5e82e9f1e0fec1ac5db2ebd16652a043">cpu1_thread</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#cfec913213194039ad31b2602bf8af4f">cpu2_thread</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#13735e9644e3c9a01bfc7785b31691ab">cpu3_thread</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#c89d80447fce7d622c7dfc6620039600">cpuidDetect</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#452f210aee65a2a30cbc5cb8923a9881">cpuInfo</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#b9f1e8692e06eb164641f50aa4d7aed6">GDT_fixer</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static __inline__ <a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#0f6e384fb3ad325aa2406af715ff341d">getDr3</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#abe8182d15984977e87831f32527ff78">getEflags</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#0844b0ab23ee41899fc5d622078d20d6">kernel_function</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static __inline__ void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#5607ecf06fd77905053dbb15eaf0ff6b">setDr3</a> (void *dr3)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#133d6aaf4635e4585ee54a0438d0bf36">setEflags</a> (<a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> eflags)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#ce31619db109aa8b20a916d48969928d">smpInit</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#71085af55092ee7b25d4bd346169ce89">bkl</a> = SPIN_LOCK_INITIALIZER</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structcpuinfo__t.html">cpuinfo_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#963def6fffd92dece6dd156abbcf4fa0">cpuinfo</a> [8]</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#d5f78a3dc61e0ca7819dc3d5d5794419">cpuInfoLock</a> = SPIN_LOCK_INITIALIZER</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#29c1aa6c61dfac505825b96920fa447d">cpus</a> = 0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#9a5fd10dce49f2fe147d346b8de71902">initSpinLock</a> = SPIN_LOCK_INITIALIZER</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="smp_8c.html#5f2d0854cc28b4f2ef16a03061d9d237">vram</a> = (<a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a> *)0xB8000</td></tr>

</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="e4dc28abba9d6b02a779ca1b8ffecd98"></a><!-- doxytag: member="smp.c::ap_trampoline_end" ref="e4dc28abba9d6b02a779ca1b8ffecd98" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ap_trampoline_end           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Referenced by <a class="el" href="smp_8c-source.html#l00234">apicMagic()</a>.
</div>
</div><p>
<a class="anchor" name="f4f760b6cb0a871253009bb20d70657d"></a><!-- doxytag: member="smp.c::ap_trampoline_start" ref="f4f760b6cb0a871253009bb20d70657d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ap_trampoline_start           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="70e557cb01aee676855cee05b0769288"></a><!-- doxytag: member="smp.c::apicMagic" ref="70e557cb01aee676855cee05b0769288" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apicMagic           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00234">234</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c.html#e4dc28abba9d6b02a779ca1b8ffecd98">ap_trampoline_end()</a>, <a class="el" href="ap-boot_8S-source.html#l00006">ap_trampoline_start</a>, <a class="el" href="smp_8c-source.html#l00045">apicRead()</a>, <a class="el" href="smp_8c-source.html#l00049">apicWrite()</a>, <a class="el" href="kprintf_8c-source.html#l00038">kprintf()</a>, and <a class="el" href="lib_2string_8h.html#e33b18edb618c656b9b795b9fce2316c">memcpy()</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00161">smpInit()</a>.
</div>
</div><p>
<a class="anchor" name="98935271c68a482c194d4c784d814ddd"></a><!-- doxytag: member="smp.c::apicRead" ref="98935271c68a482c194d4c784d814ddd" args="(address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned int apicRead           </td>
          <td>(</td>
          <td class="paramtype">address&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00045">45</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00234">apicMagic()</a>, and <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="ab4a831897afae67446bf78c88123749"></a><!-- doxytag: member="smp.c::apicWrite" ref="ab4a831897afae67446bf78c88123749" args="(unsigned int address, unsigned int data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void apicWrite           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00049">49</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00234">apicMagic()</a>.
</div>
</div><p>
<a class="anchor" name="8325315e2d1f564d9777ebd849c3296c"></a><!-- doxytag: member="smp.c::asm" ref="8325315e2d1f564d9777ebd849c3296c" args="(&quot;.globl cpuid            \n&quot;&quot;cpuid:                  \n&quot;&quot;  pushl   %ebx          \n&quot;&quot;  pushl   %edi          \n&quot;&quot;  movl    12(%esp),%eax \n&quot;&quot;  movl    16(%esp),%edi \n&quot;&quot;  cpuid                 \n&quot;&quot;  movl    %eax,0(%edi)  \n&quot;&quot;  movl    %ebx,4(%edi)  \n&quot;&quot;  movl    %ecx,8(%edi)  \n&quot;&quot;  movl    %edx,12(%edi) \n&quot;&quot;  popl    %edi          \n&quot;&quot;  popl    %ebx          \n&quot;&quot;  ret                   \n&quot;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">asm           </td>
          <td>(</td>
          <td class="paramtype">&quot;.globl cpuid \n&quot;&quot;cpuid: \n&quot;&quot; pushl %<a class="el" href="ap-boot_8S.html#1c50f544178eb7e0af39bd078c5a986f">ebx</a> \n&quot;&quot; pushl %<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a> \n&quot;&quot; movl &nbsp;</td>
          <td class="paramname"> <em>12</em>(%esp), </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">%<a class="el" href="sys__call__new_8S.html#e746cb10fae7ebdc395c8d0fd6caa393">eax</a>\n&quot;&quot;movl &nbsp;</td>
          <td class="paramname"> <em>16</em>(%esp), </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>\n&quot;&quot;cpuid\n&quot;&quot;movl%&nbsp;</td>
          <td class="paramname"> <em>eax</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">0(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)\n&quot;&quot;movl%&nbsp;</td>
          <td class="paramname"> <em>ebx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">4(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)\n&quot;&quot;movl%&nbsp;</td>
          <td class="paramname"> <em>ecx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">8(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)\n&quot;&quot;movl%&nbsp;</td>
          <td class="paramname"> <em>edx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">12(%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>)\n&quot;&quot;popl%<a class="el" href="start_8S.html#f701de0cc799320aaf54092dda7b54d2">edi</a>\n&quot;&quot;popl%<a class="el" href="ap-boot_8S.html#1c50f544178eb7e0af39bd078c5a986f">ebx</a>\n&quot;&quot;ret\n&quot;&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c7cb5b4b2fbc61966a6dfc8044a7b800"></a><!-- doxytag: member="smp.c::c_ap_boot" ref="c7cb5b4b2fbc61966a6dfc8044a7b800" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void c_ap_boot           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00137">137</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00103">cpu1_thread()</a>, <a class="el" href="smp_8c-source.html#l00109">cpu2_thread()</a>, <a class="el" href="smp_8c-source.html#l00115">cpu3_thread()</a>, <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>, <a class="el" href="smp_8c-source.html#l00037">initSpinLock</a>, <a class="el" href="io_8c-source.html#l00073">outportByte()</a>, <a class="el" href="spinlock_8c-source.html#l00070">spinLockLocked()</a>, and <a class="el" href="ap-boot_8S-source.html#l00006">xe9</a>.
</div>
</div><p>
<a class="anchor" name="66c37e11ba7abfcafc63146553b2cd16"></a><!-- doxytag: member="smp.c::cpu0_thread" ref="66c37e11ba7abfcafc63146553b2cd16" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpu0_thread           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00097">97</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00123">kernel_function()</a>, and <a class="el" href="smp_8c-source.html#l00043">vram</a>.
</div>
</div><p>
<a class="anchor" name="5e82e9f1e0fec1ac5db2ebd16652a043"></a><!-- doxytag: member="smp.c::cpu1_thread" ref="5e82e9f1e0fec1ac5db2ebd16652a043" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpu1_thread           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00103">103</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00123">kernel_function()</a>, and <a class="el" href="smp_8c-source.html#l00043">vram</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00137">c_ap_boot()</a>.
</div>
</div><p>
<a class="anchor" name="cfec913213194039ad31b2602bf8af4f"></a><!-- doxytag: member="smp.c::cpu2_thread" ref="cfec913213194039ad31b2602bf8af4f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpu2_thread           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00109">109</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00123">kernel_function()</a>, and <a class="el" href="smp_8c-source.html#l00043">vram</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00137">c_ap_boot()</a>.
</div>
</div><p>
<a class="anchor" name="13735e9644e3c9a01bfc7785b31691ab"></a><!-- doxytag: member="smp.c::cpu3_thread" ref="13735e9644e3c9a01bfc7785b31691ab" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpu3_thread           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00115">115</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00123">kernel_function()</a>, and <a class="el" href="smp_8c-source.html#l00043">vram</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00137">c_ap_boot()</a>.
</div>
</div><p>
<a class="anchor" name="c89d80447fce7d622c7dfc6620039600"></a><!-- doxytag: member="smp.c::cpuidDetect" ref="c89d80447fce7d622c7dfc6620039600" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpuidDetect           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00173">173</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00252">getEflags()</a>, <a class="el" href="kpanic_8c-source.html#l00044">kpanic()</a>, and <a class="el" href="smp_8c-source.html#l00262">setEflags()</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00161">smpInit()</a>.
</div>
</div><p>
<a class="anchor" name="452f210aee65a2a30cbc5cb8923a9881"></a><!-- doxytag: member="smp.c::cpuInfo" ref="452f210aee65a2a30cbc5cb8923a9881" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a> cpuInfo           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00182">182</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8h-source.html#l00038">cpuinfo_t::apic_id</a>, <a class="el" href="smp_8h-source.html#l00038">cpuinfo_t::apic_ver</a>, <a class="el" href="smp_8c-source.html#l00045">apicRead()</a>, <a class="el" href="smp_8h-source.html#l00042">cpuinfo_t::brand</a>, <a class="el" href="smp_8h.html#8e797e0b8a36194fca8fa45767974c2f">cpuid()</a>, <a class="el" href="smp_8c-source.html#l00040">cpuinfo</a>, <a class="el" href="smp_8c-source.html#l00038">cpuInfoLock</a>, <a class="el" href="smp_8c-source.html#l00039">cpus</a>, <a class="el" href="smp_8h-source.html#l00040">cpuinfo_t::feature</a>, <a class="el" href="smp_8c-source.html#l00252">getEflags()</a>, <a class="el" href="smp_8h-source.html#l00036">cpuinfo_t::id</a>, <a class="el" href="smp_8h-source.html#l00043">cpuinfo_t::ident</a>, <a class="el" href="kpanic_8c-source.html#l00044">kpanic()</a>, <a class="el" href="smp_8h-source.html#l00041">cpuinfo_t::max</a>, <a class="el" href="smp_8h-source.html#l00037">cpuinfo_t::ok</a>, <a class="el" href="smp_8c-source.html#l00053">setDr3()</a>, <a class="el" href="smp_8c-source.html#l00262">setEflags()</a>, <a class="el" href="smp_8h-source.html#l00039">cpuinfo_t::signature</a>, <a class="el" href="spinlock_8c-source.html#l00056">spinLock()</a>, <a class="el" href="spinlock_8c-source.html#l00037">spinUnlock()</a>, <a class="el" href="start_8S-source.html#l00051">x20</a>, and <a class="el" href="ap-boot_8S-source.html#l00052">x30</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00137">c_ap_boot()</a>, and <a class="el" href="smp_8c-source.html#l00161">smpInit()</a>.
</div>
</div><p>
<a class="anchor" name="b9f1e8692e06eb164641f50aa4d7aed6"></a><!-- doxytag: member="smp.c::GDT_fixer" ref="b9f1e8692e06eb164641f50aa4d7aed6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void GDT_fixer           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00069">69</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00065">gdt_descr::limit</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00161">smpInit()</a>.
</div>
</div><p>
<a class="anchor" name="0f6e384fb3ad325aa2406af715ff341d"></a><!-- doxytag: member="smp.c::getDr3" ref="0f6e384fb3ad325aa2406af715ff341d" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static __inline__ <a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> getDr3           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00058">58</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00123">kernel_function()</a>.
</div>
</div><p>
<a class="anchor" name="abe8182d15984977e87831f32527ff78"></a><!-- doxytag: member="smp.c::getEflags" ref="abe8182d15984977e87831f32527ff78" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> getEflags           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00252">252</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00173">cpuidDetect()</a>, and <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="0844b0ab23ee41899fc5d622078d20d6"></a><!-- doxytag: member="smp.c::kernel_function" ref="0844b0ab23ee41899fc5d622078d20d6" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a> kernel_function           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00123">123</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00058">getDr3()</a>, <a class="el" href="smp_8h-source.html#l00036">cpuinfo_t::id</a>, <a class="el" href="spinlock_8c-source.html#l00056">spinLock()</a>, and <a class="el" href="spinlock_8c-source.html#l00037">spinUnlock()</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00097">cpu0_thread()</a>, <a class="el" href="smp_8c-source.html#l00103">cpu1_thread()</a>, <a class="el" href="smp_8c-source.html#l00109">cpu2_thread()</a>, and <a class="el" href="smp_8c-source.html#l00115">cpu3_thread()</a>.
</div>
</div><p>
<a class="anchor" name="5607ecf06fd77905053dbb15eaf0ff6b"></a><!-- doxytag: member="smp.c::setDr3" ref="5607ecf06fd77905053dbb15eaf0ff6b" args="(void *dr3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static __inline__ void setDr3           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>dr3</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00053">53</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="133d6aaf4635e4585ee54a0438d0bf36"></a><!-- doxytag: member="smp.c::setEflags" ref="133d6aaf4635e4585ee54a0438d0bf36" args="(uInt32 eflags)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setEflags           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a>&nbsp;</td>
          <td class="paramname"> <em>eflags</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00262">262</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00173">cpuidDetect()</a>, and <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="ce31619db109aa8b20a916d48969928d"></a><!-- doxytag: member="smp.c::smpInit" ref="ce31619db109aa8b20a916d48969928d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void smpInit           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00161">161</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
References <a class="el" href="smp_8c-source.html#l00234">apicMagic()</a>, <a class="el" href="smp_8c-source.html#l00173">cpuidDetect()</a>, <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>, <a class="el" href="smp_8c-source.html#l00069">GDT_fixer()</a>, <a class="el" href="smp_8c-source.html#l00037">initSpinLock</a>, <a class="el" href="spinlock_8c-source.html#l00056">spinLock()</a>, and <a class="el" href="spinlock_8c-source.html#l00037">spinUnlock()</a>.
</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="71085af55092ee7b25d4bd346169ce89"></a><!-- doxytag: member="smp.c::bkl" ref="71085af55092ee7b25d4bd346169ce89" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a> <a class="el" href="smp_8c.html#71085af55092ee7b25d4bd346169ce89">bkl</a> = SPIN_LOCK_INITIALIZER<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00122">122</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
</div>
</div><p>
<a class="anchor" name="963def6fffd92dece6dd156abbcf4fa0"></a><!-- doxytag: member="smp.c::cpuinfo" ref="963def6fffd92dece6dd156abbcf4fa0" args="[8]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structcpuinfo__t.html">cpuinfo_t</a> <a class="el" href="smp_8c.html#963def6fffd92dece6dd156abbcf4fa0">cpuinfo</a>[8]          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00040">40</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="d5f78a3dc61e0ca7819dc3d5d5794419"></a><!-- doxytag: member="smp.c::cpuInfoLock" ref="d5f78a3dc61e0ca7819dc3d5d5794419" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a> <a class="el" href="smp_8c.html#d5f78a3dc61e0ca7819dc3d5d5794419">cpuInfoLock</a> = SPIN_LOCK_INITIALIZER<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00038">38</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="29c1aa6c61dfac505825b96920fa447d"></a><!-- doxytag: member="smp.c::cpus" ref="29c1aa6c61dfac505825b96920fa447d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> <a class="el" href="smp_8c.html#29c1aa6c61dfac505825b96920fa447d">cpus</a> = 0<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00039">39</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00182">cpuInfo()</a>.
</div>
</div><p>
<a class="anchor" name="9a5fd10dce49f2fe147d346b8de71902"></a><!-- doxytag: member="smp.c::initSpinLock" ref="9a5fd10dce49f2fe147d346b8de71902" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a> <a class="el" href="smp_8c.html#9a5fd10dce49f2fe147d346b8de71902">initSpinLock</a> = SPIN_LOCK_INITIALIZER<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00037">37</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00137">c_ap_boot()</a>, and <a class="el" href="smp_8c-source.html#l00161">smpInit()</a>.
</div>
</div><p>
<a class="anchor" name="5f2d0854cc28b4f2ef16a03061d9d237"></a><!-- doxytag: member="smp.c::vram" ref="5f2d0854cc28b4f2ef16a03061d9d237" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a>* <a class="el" href="smp_8c.html#5f2d0854cc28b4f2ef16a03061d9d237">vram</a> = (<a class="el" href="ubixfsv2_2types_8h.html#a4e0f27a9aca905e340c06d2dcae843c">uInt8</a> *)0xB8000          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>
Definition at line <a class="el" href="smp_8c-source.html#l00043">43</a> of file <a class="el" href="smp_8c-source.html">smp.c</a>.
<p>
Referenced by <a class="el" href="smp_8c-source.html#l00097">cpu0_thread()</a>, <a class="el" href="smp_8c-source.html#l00103">cpu1_thread()</a>, <a class="el" href="smp_8c-source.html#l00109">cpu2_thread()</a>, and <a class="el" href="smp_8c-source.html#l00115">cpu3_thread()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Tue Dec 5 23:35:01 2006 for UbixOS V2 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>