aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2008-04-05 11:37:51 -0400
committerKevin O'Connor <kevin@koconnor.net>2008-04-05 11:37:51 -0400
commit567e4e3d349150e252f0d2914d6631e766308490 (patch)
treeb9eacb8e1e2d9b4c11a7db89c0f1c02e3bf0ae7b
parent595fb4681293715796f92c76b8de111e0020ed6f (diff)
downloadseabios-hppa-567e4e3d349150e252f0d2914d6631e766308490.zip
seabios-hppa-567e4e3d349150e252f0d2914d6631e766308490.tar.gz
seabios-hppa-567e4e3d349150e252f0d2914d6631e766308490.tar.bz2
Make several functions non-inline.
-rw-r--r--src/disk.c24
-rw-r--r--src/disk.h12
-rw-r--r--src/output.c45
-rw-r--r--src/util.c33
-rw-r--r--src/util.h55
5 files changed, 107 insertions, 62 deletions
diff --git a/src/disk.c b/src/disk.c
index 1f17240..7228529 100644
--- a/src/disk.c
+++ b/src/disk.c
@@ -20,11 +20,25 @@
* Helper functions
****************************************************************/
-#define DISK_STUB(regs) do { \
- struct bregs *__regs = (regs); \
- debug_stub(__regs); \
- disk_ret(__regs, DISK_RET_SUCCESS); \
- } while (0)
+void
+__disk_ret(const char *fname, struct bregs *regs, u8 code)
+{
+ SET_BDA(disk_last_status, code);
+ if (code)
+ __set_code_fail(fname, regs, code);
+ else
+ set_code_success(regs);
+}
+
+static void
+__disk_stub(const char *fname, struct bregs *regs)
+{
+ __debug_stub(fname, regs);
+ __disk_ret(fname, regs, DISK_RET_SUCCESS);
+}
+
+#define DISK_STUB(regs) \
+ __disk_stub(__func__, (regs))
static void
basic_access(struct bregs *regs, u8 device, u16 command)
diff --git a/src/disk.h b/src/disk.h
index e7514be..a42cb97 100644
--- a/src/disk.h
+++ b/src/disk.h
@@ -95,15 +95,9 @@ struct floppy_ext_dbt_s {
} PACKED;
// Helper function for setting up a return code.
-static inline void
-disk_ret(struct bregs *regs, u8 code)
-{
- SET_BDA(disk_last_status, code);
- if (code)
- set_code_fail(regs, code);
- else
- set_code_success(regs);
-}
+void __disk_ret(const char *fname, struct bregs *regs, u8 code);
+#define disk_ret(regs, code) \
+ __disk_ret(__func__, (regs), (code))
// floppy.c
extern struct floppy_ext_dbt_s diskette_param_table2;
diff --git a/src/output.c b/src/output.c
index 78b4929..8983f97 100644
--- a/src/output.c
+++ b/src/output.c
@@ -7,7 +7,7 @@
#include <stdarg.h> // va_list
#include "farptr.h" // GET_VAR
-#include "util.h" // bprintf
+#include "util.h" // printf
#include "biosvar.h" // struct bregs
static void
@@ -103,11 +103,9 @@ isdigit(u8 c)
return c - '0' < 10;
}
-void
-bprintf(u16 action, const char *fmt, ...)
+static void
+bvprintf(u16 action, const char *fmt, va_list args)
{
- va_list args;
- va_start(args, fmt);
const char *s = fmt;
for (;; s++) {
char c = GET_VAR(CS, *(u8*)s);
@@ -166,6 +164,37 @@ bprintf(u16 action, const char *fmt, ...)
}
s = n;
}
+}
+
+void
+BX_PANIC(const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ bvprintf(0, fmt, args);
+ va_end(args);
+
+ // XXX - use PANIC PORT.
+ irq_disable();
+ for (;;)
+ hlt();
+}
+
+void
+BX_INFO(const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ bvprintf(0, fmt, args);
+ va_end(args);
+}
+
+void
+printf(const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ bvprintf(1, fmt, args);
va_end(args);
}
@@ -173,13 +202,13 @@ static void
dump_regs(const char *fname, const char *type, struct bregs *regs)
{
if (!regs) {
- bprintf(0, "%s %s: NULL\n", type, fname);
+ BX_INFO("%s %s: NULL\n", type, fname);
return;
}
- bprintf(0, "%s %s: a=%x b=%x c=%x d=%x si=%x di=%x\n"
+ BX_INFO("%s %s: a=%x b=%x c=%x d=%x si=%x di=%x\n"
, type, fname, regs->eax, regs->ebx, regs->ecx, regs->edx
, regs->esi, regs->edi);
- bprintf(0, " ds=%x es=%x ip=%x cs=%x f=%x r=%p\n"
+ BX_INFO(" ds=%x es=%x ip=%x cs=%x f=%x r=%p\n"
, regs->ds, regs->es, regs->ip, regs->cs, regs->flags, regs);
}
diff --git a/src/util.c b/src/util.c
index 98bafa9..438bf75 100644
--- a/src/util.c
+++ b/src/util.c
@@ -22,3 +22,36 @@ usleep(u32 count)
if ((inb(PORT_PS2_CTRLB) ^ kbd) & KBD_REFRESH)
count--;
}
+
+void
+memset(void *s, int c, size_t n)
+{
+ while (n)
+ ((char *)s)[--n] = c;
+}
+
+void *
+memcpy(void *d1, const void *s1, size_t len)
+{
+ u8 *d = d1;
+ const u8 *s = s1;
+
+ while (len--)
+ *d++ = *s++;
+
+ return d1;
+}
+
+void
+__set_fail(const char *fname, struct bregs *regs)
+{
+ __debug_fail(fname, regs);
+ set_cf(regs, 1);
+}
+
+void
+__set_code_fail(const char *fname, struct bregs *regs, u8 code)
+{
+ __set_fail(fname, regs);
+ regs->ah = code;
+}
diff --git a/src/util.h b/src/util.h
index 88890de..1566adf 100644
--- a/src/util.h
+++ b/src/util.h
@@ -42,34 +42,8 @@ static inline void hlt(void)
asm volatile("hlt");
}
-// XXX - move this to a c file and use PANIC PORT.
-#define BX_PANIC(fmt, args...) do { \
- bprintf(0, fmt , ##args); \
- irq_disable(); \
- for (;;) \
- hlt(); \
- } while (0)
-
-#define BX_INFO(fmt, args...) bprintf(0, fmt , ##args)
-
-static inline void
-memset(void *s, int c, size_t n)
-{
- while (n)
- ((char *)s)[--n] = c;
-}
-
-static inline void *
-memcpy(void *d1, const void *s1, size_t len)
-{
- u8 *d = d1;
- const u8 *s = s1;
-
- while (len--) {
- *d++ = *s++;
- }
- return d1;
-}
+void memset(void *s, int c, size_t n);
+void *memcpy(void *d1, const void *s1, size_t len);
static inline void
eoi_master_pic()
@@ -120,8 +94,13 @@ void __call16_int(struct bregs *callregs, u16 offset)
#endif
// output.c
-void bprintf(u16 action, const char *fmt, ...)
- __attribute__ ((format (printf, 2, 3)));
+void BX_PANIC(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)))
+ __attribute__ ((noreturn));
+void BX_INFO(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
+void printf(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
void __debug_enter(const char *fname, struct bregs *regs);
void __debug_fail(const char *fname, struct bregs *regs);
void __debug_stub(const char *fname, struct bregs *regs);
@@ -132,8 +111,6 @@ void __debug_isr(const char *fname);
__debug_stub(__func__, regs)
#define debug_isr(regs) \
__debug_isr(__func__)
-#define printf(fmt, args...) \
- bprintf(1, fmt , ##args )
// Frequently used return codes
#define RET_EUNSUPPORTED 0x86
@@ -150,15 +127,13 @@ set_code_success(struct bregs *regs)
set_cf(regs, 0);
}
-#define set_fail(regs) do { \
- __debug_fail(__func__, (regs)); \
- set_cf((regs), 1); \
- } while (0)
+void __set_fail(const char *fname, struct bregs *regs);
+void __set_code_fail(const char *fname, struct bregs *regs, u8 code);
-#define set_code_fail(regs, code) do { \
- set_fail(regs); \
- (regs)->ah = (code); \
- } while (0)
+#define set_fail(regs) \
+ __set_fail(__func__, (regs))
+#define set_code_fail(regs, code) \
+ __set_code_fail(__func__, (regs), (code))
// kbd.c
void handle_15c2(struct bregs *regs);