Change license from GPLv3 to LGPLv3.
[seabios.git] / src / bregs.h
index 2c36239aa3a836885a39248db083ebbe50ae4109..e420bbe482c117dad77d80732ec0388dfb7f5b1d 100644 (file)
@@ -2,18 +2,31 @@
 //
 // Copyright (C) 2008  Kevin O'Connor <kevin@koconnor.net>
 //
-// This file may be distributed under the terms of the GNU GPLv3 license.
+// This file may be distributed under the terms of the GNU LGPLv3 license.
 
 #ifndef __BREGS_H
 #define __BREGS_H
 
-#include "types.h" // u16
+// CPU flag bitdefs
+#define F_CF (1<<0)
+#define F_ZF (1<<6)
+#define F_IF (1<<9)
 
+// CR0 flags
+#define CR0_PG (1<<31) // Paging
+#define CR0_CD (1<<30) // Cache disable
+#define CR0_NW (1<<29) // Not Write-through
+#define CR0_PE (1<<0)  // Protection enable
+
+
+#ifndef __ASSEMBLY__
 
 /****************************************************************
  * Registers saved/restored in romlayout.S
  ****************************************************************/
 
+#include "types.h" // u16
+
 #define UREG(ER, R, RH, RL) union { u32 ER; struct { u16 R; u16 R ## _hi; }; struct { u8 RL; u8 RH; u8 R ## _hilo; u8 R ## _hihi; }; }
 
 // Layout of registers passed in to irq handlers.  Note that this
@@ -38,10 +51,6 @@ struct bregs {
  * Helper functions
  ****************************************************************/
 
-// bregs flags bitdefs
-#define F_ZF (1<<6)
-#define F_CF (1<<0)
-
 static inline void
 set_cf(struct bregs *regs, int cond)
 {
@@ -80,13 +89,15 @@ set_code_fail_silent(struct bregs *regs, u8 code)
     set_cf(regs, 1);
 }
 
-#define set_fail(regs) \
-    __set_fail(__func__, __LINE__, (regs))
-#define set_code_fail(regs, code)               \
-    __set_code_fail(__func__, __LINE__, (regs), (code))
+#define set_fail(regs)                          \
+    __set_fail((regs), __LINE__, __func__)
+#define set_code_fail(regs, code)                               \
+    __set_code_fail((regs), (code) | (__LINE__ << 8), __func__)
 
 // output.c
-void __set_fail(const char *fname, int lineno, struct bregs *regs);
-void __set_code_fail(const char *fname, int lineno, struct bregs *regs, u8 code);
+void __set_fail(struct bregs *regs, int lineno, const char *fname);
+void __set_code_fail(struct bregs *regs, u32 linecode, const char *fname);
+
+#endif // !__ASSEMBLY__
 
 #endif // bregs.h