]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Inline grub_stop_floppy
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 10 Apr 2010 17:59:22 +0000 (19:59 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 10 Apr 2010 17:59:22 +0000 (19:59 +0200)
include/grub/i386/coreboot/init.h
include/grub/i386/floppy.h [moved from kern/i386/ieee1275/init.c with 62% similarity]
include/grub/i386/pc/init.h
kern/i386/coreboot/init.c
kern/i386/loader.S

index e670074140aa276e105743cb50ce22ab5844c194..e944f9cc86a6f1b0d97bcf0ad912065f5ffb4c29 100644 (file)
@@ -21,8 +21,8 @@
 
 #include <grub/symbol.h>
 #include <grub/i386/pc/memory.h>
+#include <grub/i386/floppy.h>
 
 void EXPORT_FUNC(grub_stop) (void) __attribute__ ((noreturn));
-void EXPORT_FUNC(grub_stop_floppy) (void);
 
 #endif
similarity index 62%
rename from kern/i386/ieee1275/init.c
rename to include/grub/i386/floppy.h
index 9fb98739bbe4945ca24d3060c3646eae7390150d..0e3690549d3e39e8abc7b66ebab97af863d97755 100644 (file)
@@ -1,7 +1,6 @@
-/*  init.c -- Initialize GRUB on Open Firmware.  */
 /*
  *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2003,2004,2005,2007,2008 Free Software Foundation, Inc.
+ *  Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010  Free Software Foundation, Inc.
  *
  *  GRUB is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <grub/types.h>
-#include <grub/cache.h>
+#ifndef GRUB_FLOPPY_CPU_HEADER
+#define GRUB_FLOPPY_CPU_HEADER 1
 
-void grub_stop_floppy (void);
+#define GRUB_FLOPPY_REG_DIGITAL_OUTPUT         0x3f2
 
-void
+#ifndef ASM_FILE
+#include <grub/cpu/io.h>
+
+/* Stop the floppy drive from spinning, so that other software is
+   jumped to with a known state.  */
+static inline void
 grub_stop_floppy (void)
 {
+  grub_outb (0, GRUB_FLOPPY_REG_DIGITAL_OUTPUT);
 }
+#endif
+
+#endif
index a6d2abf413460992a3cc008cea3c23a3cf31a7a7..4005a17728a07056f2271afa19fc2334f509c4e4 100644 (file)
 #include <grub/types.h>
 #include <grub/symbol.h>
 #include <grub/machine/memory.h>
+#include <grub/cpu/floppy.h>
 
 /* Turn on/off Gate A20.  */
 void grub_gate_a20 (int on);
 
-void EXPORT_FUNC(grub_stop_floppy) (void);
-
 #endif /* ! GRUB_INIT_MACHINE_HEADER */
index 5f80f28c1c4cc3312cd1aa3b1728e0ee0d89d9c6..9013d8f9194b150c16aab1615e86594725138b1d 100644 (file)
@@ -36,8 +36,6 @@
 #include <grub/cpu/kernel.h>
 #include <grub/cpu/tsc.h>
 
-#define GRUB_FLOPPY_REG_DIGITAL_OUTPUT         0x3f2
-
 extern char _start[];
 extern char _end[];
 
@@ -50,14 +48,6 @@ grub_get_rtc (void)
   grub_fatal ("grub_get_rtc() is not implemented.\n");
 }
 
-/* Stop the floppy drive from spinning, so that other software is
-   jumped to with a known state.  */
-void
-grub_stop_floppy (void)
-{
-  grub_outb (0, GRUB_FLOPPY_REG_DIGITAL_OUTPUT);
-}
-
 void
 grub_exit (void)
 {
index ed57c43ca36ab3f1764d3b0b8f18d41d5ff6cad9..9eb5af1f726b13d7d8bf532a3a87a9aed004691d 100644 (file)
@@ -45,6 +45,8 @@
  *  This is the area for all of the special variables.
  */
 
+#include <grub/i386/floppy.h>
+
        .p2align        2       /* force 4-byte alignment */
 
 /*
@@ -96,7 +98,9 @@ bzimage:
 
        /* XXX new stack pointer in safe area for calling functions */
        movl    $0x4000, %esp
-       call    EXT_C(grub_stop_floppy)
+       movw    $GRUB_FLOPPY_REG_DIGITAL_OUTPUT, %dx
+       xorb    %al, %al
+       outb    %al, %dx
 
        /* final setup for linux boot */
        call    prot_to_real