summaryrefslogtreecommitdiff
path: root/nuttx/configs/demo9s12ne64/README.txt
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-12-13 18:01:46 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-12-13 18:01:46 +0000
commitea45a3718fc280b291b2f45d467a2494973636fa (patch)
tree446e7ccffd35a3baa2afefa3afc05ba6fdd09427 /nuttx/configs/demo9s12ne64/README.txt
parentc37fdc28c2cfdf41a549ba245c1cad85b757e53a (diff)
downloadpx4-nuttx-ea45a3718fc280b291b2f45d467a2494973636fa.tar.gz
px4-nuttx-ea45a3718fc280b291b2f45d467a2494973636fa.tar.bz2
px4-nuttx-ea45a3718fc280b291b2f45d467a2494973636fa.zip
types blkcnt_t and off_t should not depend on memory model; Remove non-standard type STATUS
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2330 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs/demo9s12ne64/README.txt')
-rwxr-xr-xnuttx/configs/demo9s12ne64/README.txt42
1 files changed, 42 insertions, 0 deletions
diff --git a/nuttx/configs/demo9s12ne64/README.txt b/nuttx/configs/demo9s12ne64/README.txt
index ef063b784..72b2c581d 100755
--- a/nuttx/configs/demo9s12ne64/README.txt
+++ b/nuttx/configs/demo9s12ne64/README.txt
@@ -191,6 +191,48 @@ FreeScale HCS12 Serial Monitor
therefore keep the normal (non-monitor) vector locations
(0xff80–0xfffe).
+Soft Registers
+^^^^^^^^^^^^^^
+
+ The mc68hcs12 compilation is prone to errors like the following:
+
+ CC: lib_b16sin.c
+ lib_b16sin.c: In function `b16sin':
+ lib_b16sin.c:110: error: unable to find a register to spill in class `S_REGS'
+ lib_b16sin.c:110: error: this is the insn:
+ (insn:HI 41 46 44 8 (parallel [
+ (set (subreg:SI (reg:DI 58 [ rad ]) 4)
+ (reg/v:SI 54 [ rad ]))
+ (clobber (scratch:HI))
+ ]) 20 {movsi_internal} (insn_list 46 (nil))
+ (expr_list:REG_UNUSED (scratch:HI)
+ (expr_list:REG_NO_CONFLICT (reg/v:SI 54 [ rad ])
+ (nil))))
+ lib_b16sin.c:110: confused by earlier errors, bailing out
+
+ There are several ways that this error could be fixed:
+
+ 1. Increase the number of soft regiaters (i.e., "fake" registers defined
+ at fixed memory locations). This can be done by adding something like
+ -msoft-reg-count=4 to the CFLAGS. This approach was not taken
+ because:
+
+ - This slows hcs12 performance
+ - All of these soft registers wouil have to be saved and restored
+ on every interrupt and context switch.
+
+ 2. Lowering the optimization level. Also not desireable becauase 99% of the
+ files that do not have this problem also increase in size. Special case
+ compilation with reduced optimization levels just for the files that need
+ it could be done, but this would complicate the make system.
+
+ 3. Restructuring files to reduce the complexity. If you add local variables
+ to hold intermediate computational results, this error can be eliminated.
+ This is the approach taken in NuttX. It has disadvantages only in that
+ (1) it takes some effort and good guessing to eliminate the problem, and (2)
+ the problem is not really eliminated -- it can and will re-occur when files
+ are changed or new files are added.
+
HCS12/DEMO9S12NEC64-specific Configuration Options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^