[LLVMdev] LLVM JIT on a Baremetal x86 Machine !!!

Mian M. Hamayun
Wed, 09 Nov 2011 13:16:18 -0000

Hi James,

Thanks again for bearing with me, you have been very helpful.

I have got the problem fixed. In fact I needed to override the 'LSeek'
implementation of SpecialFile in SpecialModule class as well.
The log for the working example is attached, just as a reference.

Now one more thing, when the build system creates the ISO9660 CD-ROM
Image, it executes the following commands:

mkdir -p /tmp/hzn/boot
mkdir -p /tmp/hzn/kiwi/modules
cp
/altamaha/home3/hamayun/workspace/horizon/horizon/Baremetal/boot/cdboot.img
/tmp/hzn/boot
cp embedded /tmp/hzn/kiwi/kernel
cp
/altamaha/home3/hamayun/workspace/horizon/code-samples/hello_world.hbc
/tmp/hzn/kiwi/modules/hbc
mkisofs -quiet -J -R -l -b boot/cdboot.img -V Horizon\ CD-ROM
-boot-load-size 4 -boot-info-table -no-emul-boot -o cd.img /tmp/hzn

In the third line above, the file "cdboot.img" is being copied. Is
this
only a bootloader or does it also contain an OS Kernel ? (Like for
example the kernel of kiwi os)
And where can I find the sources to this "cdboot.img" file ? I mean if
I
need to modify/recreate this file, how can I do that.

Best Regards,
Hamayun


On 11/08/2011 04:59 PM, James Molloy wrote:
> Hi,
>
> First question: "/module" is mapped to a special file that reads
a kernel module passed in by the bootloader. Much like GRUB, kiwi's
bootloader loads a kernel and can load one or more extra files into memory.
These are passed to the kernel.
>
> The horizon kernel expects one file, which it makes accessible at
"/module". This should be set up to be whatever you set KERNEL_HBC to
be.
>
> Second question: The program is statically compiled on the host system
against the host C and C++ libraries. Then, it is patched slightly to change
linux syscall instructions to "int 0xff" instructions, which get
trapped at runtime.
>
> At build time it reads your linux kernel headers to find what syscall
numbers map to what syscalls, and emulates a subset of the linux kernel. This is
how the C standard library etc works.
>
> Cheers,
>
> James
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run.log
Type: text/x-log
Size: 7245 bytes
Desc: not available
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20111109/159a3ea8/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3781 bytes
Desc: S/MIME Cryptographic Signature
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20111109/159a3ea8/attachment-0001.bin>