<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/drivers/acpi.c</filename>
    </added>
    <added>
      <filename>src/include/drivers/acpi.h</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -19,7 +19,7 @@ com4: enabled=0
 i440fxsupport: enabled=1
 usb1: enabled=0
 #sb16: wavemode=3, wave=op.wav, loglevel=5, log=sb16.log, dmatimer=600000
-sb16: midimode=3, midi=a.midi, wavemode=3, wave=a.wav, loglevel=5, log=sb16.log, dmatimer=600000
+#sb16: midimode=3, midi=a.midi, wavemode=3, wave=a.wav, loglevel=5, log=sb16.log, dmatimer=600000
 floppy_bootsig_check: disabled=0
 vga_update_interval: 40000
 vga: extension=vbe</diff>
      <filename>bochsrc</filename>
    </modified>
    <modified>
      <diff>@@ -31,6 +31,7 @@
 #include &lt;drivers/kb.h&gt;
 #include &lt;drivers/sb16.h&gt;
 #include &lt;drivers/smbios.h&gt;
+#include &lt;drivers/acpi.h&gt;
 #include &lt;irq.h&gt;
 #include &lt;page.h&gt;
 #include &lt;mm.h&gt;
@@ -79,6 +80,12 @@ void init(unsigned long magic, unsigned long addr) {
 	irq_install();
 	kprintf(&quot;%k[ok]\n&quot;, VIDEO_FG_LIGHT_GREEN);
 
+	kprintf(&quot;Initialising ACPI:\t&quot;);
+	if(acpi_init() == ACPI_SUCCESS)
+		kprintf(&quot;%k[ok]\n&quot;, VIDEO_FG_LIGHT_GREEN);
+	else
+		kprintf(&quot;%k[failed]\n&quot;, VIDEO_FG_RED);
+
 	void *prepage = kmalloc(8);
 	kprintf(&quot;Pre-paging, pointer: %x\n&quot;, prepage);
 	kfree(prepage);
@@ -107,10 +114,6 @@ void init(unsigned long magic, unsigned long addr) {
 
 	__asm__ __volatile__(&quot;sti&quot;);
 
-	kprintf(&quot;Installing system clock:\t&quot;);
-	timer_install();
-	kprintf(&quot;%k[ok]\n&quot;, VIDEO_FG_LIGHT_GREEN);
-
 	kprintf(&quot;Installing keyboard:\t&quot;);
 	keyboard_install();
 	kprintf(&quot;%k[ok]\n&quot;, VIDEO_FG_LIGHT_GREEN);
@@ -125,6 +128,11 @@ void init(unsigned long magic, unsigned long addr) {
 		kprintf(&quot;%k[Version %d.%d OK]\n&quot;, VIDEO_FG_LIGHT_GREEN, first, second);
 	}
 
+	kprintf(&quot;Installing system clock:\t&quot;);
+	timer_install();
+	kprintf(&quot;%k[ok]\n&quot;, VIDEO_FG_LIGHT_GREEN);
+
+
 	kprintf(&quot;Probing for SMBIOS: &quot;);
 	smbios_entry_t *smbios = smbios_init();
 	if(smbios)</diff>
      <filename>src/arch/i386/boot/init.c</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
-ext_files = [&quot;video/tvbe.c&quot;]
+ext_files = [&quot;video/vga.c&quot;]
 eval File.open(&quot;../rant.rb&quot;).read
 </diff>
      <filename>src/drivers/Rantfile</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,7 @@
 #include &lt;drivers/pit.h&gt;
 #include &lt;lib/kprintf.h&gt;
 #include &lt;procio.h&gt;
+#include &lt;drivers/sb16.h&gt;
 
 uint32_t pit_ticks = 0;
 </diff>
      <filename>src/drivers/pit.c</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,28 @@
 #include &lt;drivers/smbios.h&gt;
 #include &lt;asm/stddef.h&gt;
+#include &lt;lib/kprintf.h&gt;
+
+typedef struct {
+	uint8_t type;
+	uint8_t length;
+	uint16_t handle;
+} smbios_header_t;
+
+typedef struct {
+	uint8_t type;
+	uint8_t length;
+	uint16_t handle;
+	uint8_t vendor;
+	uint8_t bios_version;
+	uint16_t bios_start_addr;
+	uint8_t bios_release_date;
+	uint8_t bios_rom_size;
+	uint8_t bios_char_ext[2];
+	uint8_t system_bios_maj_ver;
+	uint8_t system_bios_min_ver;
+	uint8_t controller_firmware_maj_ver;
+	uint8_t controller_firmware_min_ver;
+} smbios_type0_t;
 
 smbios_entry_t *smbios_init(void){
 	char *mem = (char *)SMBIOS_START_ADDR;
@@ -8,7 +31,11 @@ smbios_entry_t *smbios_init(void){
 			break;
 		mem++;
 	}
-	if(mem == SMBIOS_END_ADDR)
+	if((unsigned int)mem == SMBIOS_END_ADDR)
 		return NULL;
-	return (smbios_entry_t *)mem;
+
+	smbios_entry_t *smbios = (smbios_entry_t *)mem;
+	smbios_header_t *header = (smbios_header_t *)smbios-&gt;table_address;
+
+	return smbios;
 }</diff>
      <filename>src/drivers/smbios.c</filename>
    </modified>
    <modified>
      <diff>@@ -26,5 +26,6 @@
 size_t strlen(const char *);
 void *memset(void *, int, size_t);
 void *memcpy(void *, const void *, size_t);
+int memcmp(const void *, const void *, size_t);
 
 #endif /* __LIB_STRING_H__ */</diff>
      <filename>src/include/lib/string.h</filename>
    </modified>
    <modified>
      <diff>@@ -100,3 +100,15 @@ void *memcpy(void *dest, const void *src, size_t n) {
 	return dest;
 }
 
+int memcmp(const void *s1, const void *s2, size_t n){
+	const unsigned char *us1 = (const unsigned char *)s1;
+	const unsigned char *us2 = (const unsigned char *)s2;
+	while (n-- != 0){
+		if (*us1 != *us2)
+			return (*us1 &lt; *us2) ? -1 : +1;
+		us1++;
+		us2++;
+	}
+	return 0;
+}
+</diff>
      <filename>src/lib/string.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7c44ab36bde36f3d5b40fa038d13f2eeda01ddec</id>
    </parent>
  </parents>
  <author>
    <name>Andrew Etches</name>
    <email>seadog@mehmoo.com</email>
  </author>
  <url>http://github.com/seadog/kaiser/commit/dd19c8369300892bfb111703a6b629bab0e24442</url>
  <id>dd19c8369300892bfb111703a6b629bab0e24442</id>
  <committed-date>2009-03-31T17:17:45-07:00</committed-date>
  <authored-date>2009-03-31T17:17:45-07:00</authored-date>
  <message>Added some basic ACPI stuff, and removed sb16 from bochsrc for the time being</message>
  <tree>87d6feb047f0d5b35d21764840b5528a01b34bf4</tree>
  <committer>
    <name>Andrew Etches</name>
    <email>seadog@mehmoo.com</email>
  </committer>
</commit>
