On 10-Jul-2002 Serguei Tzukanov wrote: > Some working notes. > > I've written the libc/csu part, kernel successfully starts init and init > forks off for the execve of -sh, > (http://tzukanov.narod.ru/freebsd390/bootlog.txt) > but there is problem with printing from userland, e.g. output from > userland are not visible. Write syscall to descs 1,2 in init returns > with success. > I'm sure it's something very stupid, so maybe someone have a clue? > > And another problem (well-known?): > __syscall returns 64-bit value but mmap returns 4-byte word in the > td->td_retval[0]. Wrapper for mmap in libc casts 64 rv to 32 and alays > gets zero. This leads to truncating to zero due to cast on 32-bit > big-endian architectures. > The solution is obvious - using constructs like > td->td_retval[_QUAD_LOWWORD] = xxx in MI code. > > For now I just avoid it with hack in syscall handler.
td_retval[0] is the low word, and td_retval[1] is the high word, you just need to make sure the values from those two words get returned properly to userland. -- John Baldwin <[EMAIL PROTECTED]> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message