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

Mian M. Hamayun mian-muhammad.hamayun at imag.fr
Wed Nov 9 05:16:18 PST 2011


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>


More information about the llvm-dev mailing list