Ok. So I took a look at the code to figure out why the
last output that I see is "Jumping to LinuxBIOS".
My assembly is weak so I'd appreciate corrections to
my interpretation of the asm below.
movb $0x12, %al ; outb %al, $0x80
movl %esp, %ebp
mov $str_pre_main, %ebx ; lea 0f, %esp ; jmp
leal _iseg, %edi
This suggests to me that since the console_tx_string
succesfully wrote to the serial port, that leal _iseg,
%edi; jmp %edi is the area of my problem.
looking at _iseg, by dumping crt0.o, i see:
aab: b0 12 mov $0x12,%al
aad: e6 80 out %al,$0x80
aaf: 89 e5 mov %esp,%ebp
ab1: bb 1c 00 00 00 mov $0x1c,%ebx
ab6: 8d 25 c1 0a 00 00 lea 0xac1,%esp
abc: e9 fa f7 ff ff jmp 2bb
ac1: 8d 3d 00 00 00 00 lea 0x0,%edi
ac7: ff e7 jmp *%edi
ac9: b0 ee mov $0xee,%al
acb: e6 80 out %al,$0x80
acd: f4 hlt
ace: eb f9 jmp ac9
i was surprised by the lea 0x0, %edi; jmp *%edi. but
then i figured _iseg might get defined later by the
i see that the i386 config sets _iseg to _RAMBASE. and
that was set to 0x4000 in another i386 default. so
dumping linuxbios shows:
f0aab: b0 12 mov
f0aad: e6 80 out
f0aaf: 89 e5 mov
f0ab1: bb ec 0a 0f 00 mov
f0ab6: 8d 25 c1 0a 0f 00 lea
f0abc: e9 fa f7 ff ff jmp f02bb
f0ac1: 8d 3d 00 40 00 00 lea
f0ac7: ff e7 jmp *%edi
f0ac9: b0 ee mov
f0acb: e6 80 out
f0acd: f4 hlt
f0ace: eb f9 jmp f0ac9
that _iseg looks better now. so next, i need to figure
out what ought to be at 0x4000. looking at __main
since that's where the copying to ram serial output
comes from, i see a mov f0ad0,ebx, output, then lea
0x4000,%edi. and a 0xf0b14 into %esi. we then jump to
dcl1_n2b. i don't really understand the code there.
but i think that looks like it's copying f0b14 to
4000. i think that's what the movsb
%ds:(%esi),%es:(%edi) is doing. i wonder when that
i guess i must be wrong here, f0b14, is after
_binary_linuxbios_payload_start. i doubt we're
supposed to be jumping to filo at that point. i was
expecting pci initialization, other stuff and then
filo to come in and read the kernel elf from an ext2
partition from the ide (CompactFlash) device. are
those assumptions valid?
ok. i ought to reread the code. i suspect that most
likely i've got misprogrammed sdram or something like
that. in the meantime, if anyone's got
suggestions/advice, i'm all ears.
f09f2: bb d0 0a 0f 00 mov
f09f7: 8d 25 02 0a 0f 00 lea
f09fd: e9 b9 f8 ff ff jmp f02bb
f0a02: b0 11 mov
f0a04: e6 80 out
f0a06: fc cld
f0a07: 8d 35 14 0b 0f 00 lea
f0a0d: 8d 3d 00 40 00 00 lea
f0a13: 89 ec mov
f0a15: bd ff ff ff ff mov
f0a1a: eb 05 jmp f0a21
f0a1c: a4 movsb
f0a1d: 01 db add
f0a1f: 75 07 jne f0a28
f0a21: 8b 1e mov
f0a23: 83 ee fc sub
f0a26: 11 db adc
f0a28: 72 f2 jb f0a1c
f0a2a: 31 c0 xor
f0a2c: 40 inc %eax
--- ramesh bios <ramesh_bios(a)yahoo.com> wrote:
Just wanted to report that your suggestion was
excellent. I'm now getting serial output saying
"Jumping to LinuxBIOS". It took only a few minutes
get this working so I was pleasantly surprised. :-)
Ok, I'm now going to read a bit more about x86
and figure out what's next and what the memory
LinuxBIOS-1.0.0 Tue Jan 11 06:22:00 IST 2005
Setting up default parameters for memory
Probing for DIMM0
Probing for DIMM1
Page Size: 00001000
Component Banks: 4
Module Banks: 2
DIMM size: 08000000
Memory sizing done, MC_BANK_CFG = 0x55200070
Copying LinuxBIOS to ram.
Jumping to LinuxBIOS.
--- "Ronald G. Minnich" <rminnich(a)lanl.gov> wrote:
your plan is fine. use the advantech pcm5823 as
model board, and use
freebios, not freebios2.
Don't fit linux into the flash. Use filo and boot
linux from a hard drive.
Keep me posted on how it goes and good luck.
Linuxbios mailing list
Do you Yahoo!?
Yahoo! Mail - 250MB free storage. Do more. Manage
Linuxbios mailing list
Do you Yahoo!?
Read only the mail you want - Yahoo! Mail SpamGuard.