svn commit: r276410 - user/nwhitehorn/kboot/powerpc/kboot
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Tue Dec 30 14:50:05 UTC 2014
Author: nwhitehorn
Date: Tue Dec 30 14:50:03 2014
New Revision: 276410
URL: https://svnweb.freebsd.org/changeset/base/276410
Log:
Port to Linux.
Modified:
user/nwhitehorn/kboot/powerpc/kboot/host_syscall.S
user/nwhitehorn/kboot/powerpc/kboot/host_syscall.h
user/nwhitehorn/kboot/powerpc/kboot/hostcons.c
user/nwhitehorn/kboot/powerpc/kboot/hostdisk.c
user/nwhitehorn/kboot/powerpc/kboot/main.c
Modified: user/nwhitehorn/kboot/powerpc/kboot/host_syscall.S
==============================================================================
--- user/nwhitehorn/kboot/powerpc/kboot/host_syscall.S Tue Dec 30 12:47:44 2014 (r276409)
+++ user/nwhitehorn/kboot/powerpc/kboot/host_syscall.S Tue Dec 30 14:50:03 2014 (r276410)
@@ -11,13 +11,17 @@ ENTRY(host_write)
blr
ENTRY(host_seek)
- li %r0, 478 # SYS_lseek
+ li %r0, 19 # SYS_lseek
sc
blr
ENTRY(host_open)
li %r0, 5 # SYS_open
sc
+ bso 1f
+ blr
+1:
+ li %r3, 0
blr
ENTRY(host_close)
@@ -26,17 +30,17 @@ ENTRY(host_close)
blr
ENTRY(host_mmap)
- li %r0, 477 # SYS_mmap
+ li %r0, 90 # SYS_mmap
sc
blr
ENTRY(host_gettimeofday)
- li %r0, 116 # SYS_gettimeofday
+ li %r0, 78 # SYS_gettimeofday
sc
blr
ENTRY(host_select)
- li %r0, 93 # SYS_select
+ li %r0, 82 # SYS_select
sc
blr
Modified: user/nwhitehorn/kboot/powerpc/kboot/host_syscall.h
==============================================================================
--- user/nwhitehorn/kboot/powerpc/kboot/host_syscall.h Tue Dec 30 12:47:44 2014 (r276409)
+++ user/nwhitehorn/kboot/powerpc/kboot/host_syscall.h Tue Dec 30 14:50:03 2014 (r276410)
@@ -1,5 +1,5 @@
/*-
- * Copyright (C) 2010 Nathan Whitehorn
+ * Copyright (C) 2014 Nathan Whitehorn
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,11 +32,11 @@
ssize_t host_read(int fd, void *buf, size_t nbyte);
ssize_t host_write(int fd, const void *buf, size_t nbyte);
-ssize_t host_seek(int fd, uint64_t offset, int whence);
+ssize_t host_seek(int fd, int offset, int whence);
int host_open(char *path, int flags, int mode);
int host_close(int fd);
-void *host_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t);
-#define host_getmem(size) host_mmap(0, size, 3 /* RW */, 0x1000 /* ANON */, -1, 0);
+void *host_mmap(void *addr, size_t len, int prot, int flags, int fd, int);
+#define host_getmem(size) host_mmap(0, size, 3 /* RW */, 0x22 /* ANON */, -1, 0);
struct host_timeval {
int tv_sec;
int tv_usec;
Modified: user/nwhitehorn/kboot/powerpc/kboot/hostcons.c
==============================================================================
--- user/nwhitehorn/kboot/powerpc/kboot/hostcons.c Tue Dec 30 12:47:44 2014 (r276409)
+++ user/nwhitehorn/kboot/powerpc/kboot/hostcons.c Tue Dec 30 14:50:03 2014 (r276410)
@@ -59,6 +59,7 @@ hostcons_init(int arg)
{
/* XXX: set nonblocking */
+ /* tcsetattr(~(ICANON | ECHO)) */
return (0);
}
Modified: user/nwhitehorn/kboot/powerpc/kboot/hostdisk.c
==============================================================================
--- user/nwhitehorn/kboot/powerpc/kboot/hostdisk.c Tue Dec 30 12:47:44 2014 (r276409)
+++ user/nwhitehorn/kboot/powerpc/kboot/hostdisk.c Tue Dec 30 14:50:03 2014 (r276410)
@@ -40,7 +40,7 @@ static int hostdisk_ioctl(struct open_fi
static void hostdisk_print(int verbose);
struct devsw hostdisk = {
- "a",
+ "s",
DEVT_DISK,
hostdisk_init,
hostdisk_strategy,
@@ -96,7 +96,7 @@ hostdisk_open(struct open_file *f, ...)
desc->d_unit = host_open(path, O_RDONLY, 0);
free(path);
- if (desc->d_unit < 0)
+ if (desc->d_unit <= 0)
return (ENOENT);
return (0);
Modified: user/nwhitehorn/kboot/powerpc/kboot/main.c
==============================================================================
--- user/nwhitehorn/kboot/powerpc/kboot/main.c Tue Dec 30 12:47:44 2014 (r276409)
+++ user/nwhitehorn/kboot/powerpc/kboot/main.c Tue Dec 30 14:50:03 2014 (r276410)
@@ -93,6 +93,7 @@ main(int argc, const char **argv)
{
void *heapbase;
const size_t heapsize = 15*1024*1024;
+ const char *bootdev = argv[1];
/*
* Set the heap to one page after the end of the loader.
@@ -105,7 +106,7 @@ main(int argc, const char **argv)
*/
cons_probe();
- printf("Boot device: %s\n", argv[1]);
+ printf("Boot device: %s\n", bootdev);
archsw.arch_getdev = kboot_getdev;
archsw.arch_copyin = kboot_copyin;
@@ -117,8 +118,8 @@ main(int argc, const char **argv)
printf("%s, Revision %s\n", bootprog_name, bootprog_rev);
printf("(%s, %s)\n", bootprog_maker, bootprog_date);
- setenv("currdev", argv[1], 1);
- setenv("loaddev", argv[1], 1);
+ setenv("currdev", bootdev, 1);
+ setenv("loaddev", bootdev, 1);
setenv("LINES", "24", 1);
interact(NULL); /* doesn't return */
@@ -281,6 +282,7 @@ kboot_autoload(void)
void
_start(int argc, const char **argv, char **env)
{
- main(argc, argv);
+ register volatile void **sp asm("r1");
+ main((int)sp[0], (const char **)&sp[1]);
}
More information about the svn-src-user
mailing list