aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2010-06-07 12:05:22 +0800
committerFeng Tang <feng.tang@intel.com>2010-07-20 11:10:03 +0800
commitf86e7a6867e35bda1be65b8388c1cc6fecd198ba (patch)
treeef9c1634cb93a33901858c72cf6bb7d99bc02254
parent4f0c539f915d7b69ae68bca3f17f8d74b4b2639d (diff)
downloadsyslinux-f86e7a6867e35bda1be65b8388c1cc6fecd198ba.tar.gz
syslinux-f86e7a6867e35bda1be65b8388c1cc6fecd198ba.tar.xz
syslinux-f86e7a6867e35bda1be65b8388c1cc6fecd198ba.zip
elflink: add core/hello.c
-rw-r--r--core/hello.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/core/hello.c b/core/hello.c
new file mode 100644
index 00000000..68eec044
--- /dev/null
+++ b/core/hello.c
@@ -0,0 +1,96 @@
+#include <stddef.h>
+#include <com32.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "core.h"
+
+#include <console.h>
+
+static int console_init = 0;
+
+void myputchar(int c)
+{
+ static com32sys_t ireg;
+
+ if (c == '\n')
+ myputchar('\r');
+
+ ireg.eax.b[1] = 0x02;
+ ireg.edx.b[0] = c;
+ __intcall(0x21, &ireg, NULL);
+}
+
+void myputs(const char *str)
+{
+ while (*str)
+ myputchar(*str++);
+}
+
+void hello(void)
+{
+ static char hello_str[] = "Hello, World!";
+
+ printf("%s from (%s)\n", hello_str, __FILE__); /* testing */
+}
+
+void hexdump(void *buf, int bytelen, const char *str)
+{
+ unsigned int *p32, i;
+
+ if (str)
+ printf("Dump %s:\n", str);
+
+ p32 = (unsigned int *)buf;
+ for (i = 0; i < (bytelen / 4); i++){
+ printf(" 0x%08x ", p32[i]);
+ }
+ printf("\n\n");
+}
+
+void mydump(void)
+{
+ printf("append buf at %x\n", AppendBuf);
+
+ hexdump(AppendBuf, 60, "appendbuf");
+}
+
+static inline void myprint(int num)
+{
+ uint32_t i;
+
+ for (i = 0; i < 5; i ++)
+ printf("%d", num);
+ printf("\n");
+}
+
+void mp1(void)
+{
+ myprint(1);
+}
+
+void mp2(void)
+{
+ myprint(2);
+}
+
+void mp3(void)
+{
+ myprint(3);
+}
+
+void mp4(void)
+{
+ myprint(4);
+}
+
+void mp5(void)
+{
+ myprint(5);
+}
+
+void printf_init(void)
+{
+ openconsole(&dev_null_r, &dev_stdcon_w);
+}
+