diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2008-04-05 11:37:51 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2008-04-05 11:37:51 -0400 |
commit | 567e4e3d349150e252f0d2914d6631e766308490 (patch) | |
tree | b9eacb8e1e2d9b4c11a7db89c0f1c02e3bf0ae7b | |
parent | 595fb4681293715796f92c76b8de111e0020ed6f (diff) | |
download | seabios-567e4e3d349150e252f0d2914d6631e766308490.tar.gz |
Make several functions non-inline.
-rw-r--r-- | src/disk.c | 24 | ||||
-rw-r--r-- | src/disk.h | 12 | ||||
-rw-r--r-- | src/output.c | 45 | ||||
-rw-r--r-- | src/util.c | 33 | ||||
-rw-r--r-- | src/util.h | 55 |
5 files changed, 107 insertions, 62 deletions
@@ -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) @@ -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 78b4929e..8983f979 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); } @@ -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; +} @@ -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); |