[kaffe] CVS kaffe (inaba): FAQ.arm is added.
cvs-commits at kaffe.org
Sat Aug 11 22:21:57 PDT 2007
Date: 2007/08/12 05:20:52
FAQ.arm is added.
diff -u kaffe/ChangeLog:1.5033 kaffe/ChangeLog:1.5034
--- kaffe/ChangeLog:1.5033 Sat Aug 11 03:51:11 2007
+++ kaffe/ChangeLog Sun Aug 12 05:20:52 2007
@@ -1,3 +1,7 @@
+2007-08-12 Kiyo Inaba <inaba at src.ricoh.co.jp>
+ * FAQ/FAQ.arm: New file.
2007-08-11 Kiyo Inaba <inaba at src.ricoh.co.jp>
Checking out kaffe/FAQ/FAQ.arm
--- /dev/null Sun Aug 4 19:57:58 2002
+++ kaffe/FAQ/FAQ.arm Sun Aug 12 05:21:57 2007
@@ -0,0 +1,128 @@
+FAQ for ARM processor
+ (or 'Why your "Kaffe does not work for ARM" question is not answered?')
+There are so many questions for the last several years saying "Kaffe does
+not work for ARM!" which usually are not answered on the mailing list.
+This is not because other developers ignore your question, but it is
+really hard to answer these questions without having enough information
+for your environment.
+After some struggle, I made Kaffe work for both linux and netbsd by
+using excellent simulators (QEMU and GXemul) and I tried to summarize
+how each arm processor is different in this memo.
+For the ARM family, supported instruction set is indicated by the
+'architecture version'. Most common architecture version right now
+should be armv4 or armv5. Recently armv6 becomes common, but since
+more powerful instruction set needs extra power consumption, and
+simpler instruction set may still remain for their purpose. This is
+very different from what happens for PC's CPU architecture.
+Each architecture version may have suffix characters like 't', 'e'
+etc., but from the Kaffe's point of view, they usually does not make
+CPU core is another properties each ARM processor have. Even though
+two processor belong to same architecture version (say, armv4), one
+is called 'ARM7' but the other is called 'ARM9'. The difference between
+ARM7 and ARM9 are not instruction set level (some of ARM9 belongs to
+different architecture version, by the way) but the difference is
+their internal structure. ARM7 uses 3 stage pipeline (simple, but
+slow) and ARM9 uses 5 stage pipeline. This structural difference
+makes ARM9 can be faster (with same clock). As I mentioned in the
+architecture version, even though ARM9 can be faster than ARM7, ARM7
+may still have their own applications because of its low power consumption.
+From Kaffe's point of view, the difference of internal structure does
+not make any difference. (In detail, there are differences, e.g. cache
+control, but they are usually hidden by the operating system)
+The other concern for each ARM processor is whether they have MMU
+(Memory Management Unit) or not. Until recently, if you want to use
+higher level operating systems (like BSD or linux) the MMU is mandatory.
+But the introduction of uClinux changes this situation. The uClinux is
+a great rescue for MMU-less CPU to use higher level operating systems
+and there are so many porting work has been done to use uClinux as the
+OS for MMU-less ARM. MMU-less ARM is usually ARM7 based, but the CPU
+difference and whether they have MMU or not are independent.
+From Kaffe's point of view, there are no support for uClinux right now
+and if you have MMU-less ARM, there are no hope to use Kaffe on it.
+I hope this situation should be changed soon, and if you make some
+improvement, please let other developers know about that.
+FPU (Floating Point Unit) is another big energy eater in the CPU. That
+is the main reason why not all ARM processors (or other CPU's designed
+for embedded application) have FPU. Even though the CPU itself does not
+have FPU, sometimes FPU instruction can be executed on the CPU. This is
+done with the help of the operating system, and in this case we can
+treat this system as though it has FPU.
+In ARM architecture, the story becomes more complex. They first introduce
+one FPU called 'FPA', and later they introduce absolutely different
+version called 'VFP' These two are incompatible from instruction set
+level, and you can not mix instructions for these two FPU's.
+From Kaffe's point of view, only 'FPA' is supported right now. Some
+effort has been started to use 'VFP', and I hope we can rewrite this
+section soon. For jit/jit3 engine, the support of 'FPA' is mandatory
+(the internal code generation emits FPA instruction) and if you don't
+have FPA (or FPA emulation by the operating system) only possibility
+is to use interpreter engine.
+One more note, current configure option '--enable-xscale' changes the
+behavior not only for instruction set but also for exception handler.
+The later is done because of xscale does not have FPU and number of
+registers saved on the stack is different from with FPU version.
+As like as usual embedded processors, ARM can be configured to be
+used for the big-endian or little-endian. I don't have exact statistics,
+but little-endian should be common for ARM processor. The only exception
+I know is Linksys NSLU2, but debian people makes their little-endian
+version of linux running on this system, and from application's point
+of view, we can not determine the difference.
+From Kaffe's point of view, both endians are supported (m68k or sparc
+are big-endian), but some MD part of jit makes it harder to support
+big-endian ARM. When we have big-endian version of OS available for ARM,
+we need to tackle this issue.
+Currently Kaffe is supported on NetBSD and linux (not uClinux) only.
+The last (but, as usual, not least) thing you must be careful is ARM
+are used with not only one ABI. They are now changing their standard
+ABI to so called 'EABI'.
+Currently Kaffe only works with so called 'legacy ABI (or apcs-gnu)'.
+Do you still want to post a message to the ML simply saying 'Kaffe
+does not work for my ARM board!'?
More information about the kaffe