QT210 -> u-boot-samsung-dev中的cpu/s5pc11x/config.mk檔案注釋

來源:互聯網
上載者:User

此檔案是根據smdkv210single_config配置進行過刪減,可產生smdkv210single_config配置的uboot鏡像,其它配置被刪除,僅供參考。

## (C) Copyright 2002# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>## See file CREDITS for list of people who contributed to this# project.## This program is free software; you can redistribute it and/or# modify it under the terms of the GNU General Public License as# published by the Free Software Foundation; either version 2 of# the License, or (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston,# MA 02111-1307 USA## -fno-strict-aliasing 沒有嚴格的別名# -fno-common 不初始化全域變數# -ffixed-r8 將r8作為固定寄存器看待;產生的目標碼不應該引用它(除了……見下面的參考)# -msoft-float 軟體類比floatPLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \-msoft-float# Make ARMv5 to allow more compilers to work, even though its v6.# -march=armv5te 指定目標ARM架構為armv5tePLATFORM_CPPFLAGS += -march=armv5te# =========================================================================## Supply options according to compiler version## =========================================================================# 檢查是否支援-mapcs-32,如果支援,則為cc-option,否則為-mabi=apcs-gnu,下同# -mapcs-32 # -mabi=apcs-gnu 產生一個棧架構,作為所有ARM程序呼叫函數中的標準,即使對於正常執行代碼這不是絕對必要的PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)# -mno-thumb-interwork 設定產生的程式碼不支援ARM和Thumb指令之間的調用PLATFORM_CPPFLAGS +=$(call cc-option,-mno-thumb-interwork,)# -mshort-load-bytes# -malignment-trapsPLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))# -mapcs-32 -mshort-load-bytes -malignment-traps我使用的編譯器不支援,沒查到具體功能

-fstrict-aliasingAllow the compiler to assume the strictest aliasing rules applicable to the lan-guage being compiled. For C (and C++), this activates optimizations based on thetype of expressions. In particular, an object of one type is assumed neverto reside at the same address as an object of a different type, unless the typesare almost the same. For example, an unsigned int can alias an int, but nota void* or a double. A character type may alias any other type.Pay special attention to code like this:union a_union {int i;double d;};int f() {union a_union t;t.d = 3.0;return t.i;}The practice of reading from a different union member than the onemost recently written to (called “type-punning”) is common. Even with‘-fstrict-aliasing’, type-punning is allowed, provided the memory isaccessed through the union type. So, the code above will work as expected.See Section 4.9 [Structures unions enumerations and bit-fields implementation],page 287. However, this code might not:int f() {union a_union t;int* ip;t.d = 3.0;ip = &t.i;return *ip;}Similarly, access by taking the address, casting the resulting pointer and deref-erencing the result has undefined behavior, even if the cast uses a union type,e.g.:int f() {double d = 3.0;return ((union a_union *) &d)->i;}The ‘-fstrict-aliasing’ option is enabled at levels ‘-O2’, ‘-O3’, ‘-Os’.
-fno-commonIn C code, controls the placement of uninitialized global variables. Unix Ccompilers have traditionally permitted multiple definitions of such variables indifferent compilation units by placing the variables in a common block. Thisis the behavior specified by ‘-fcommon’, and is the default for GCC on mosttargets. On the other hand, this behavior is not required by ISO C, and onsome targets may carry a speed or code size penalty on variable references.The ‘-fno-common’ option specifies that the compiler should place uninitializedglobal variables in the data section of the object file, rather than generatingthem as common blocks. This has the effect that if the same variable is declared(without extern) in two different compilations, you will get a multiple-definitionerror when you link them. In this case, you must compile with ‘-fcommon’instead. Compiling with ‘-fno-common’ is useful on targets for which it providesbetter performance, or if you wish to verify that the program will work on othersystems which always treat uninitialized variable declarations this way.
-ffixed-regTreat the register named reg as a fixed register; generated code should neverrefer to it (except perhaps as a stack pointer, frame pointer or in some otherfixed role).reg must be the name of a register. The register names accepted are machine-specific and are defined in the REGISTER_NAMES macro in the machine descrip-tion macro file.This flag does not have a negative form, because it specifies a three-way choice.
-msoft-floatEquivalent to ‘-mfloat-abi=soft’.
-mfloat-abi=nameSpecifies which floating-point ABI to use. Permissible values are: ‘soft’,‘softfp’ and ‘hard’.Specifying ‘soft’ causes GCC to generate output containing library calls forfloating-point operations. ‘softfp’ allows the generation of code using hard-ware floating-point instructions, but still uses the soft-float calling conventions.‘hard’ allows generation of floating-point instructions and uses FPU-specificcalling conventions.The default depends on the specific target configuration. Note that the hard-float and soft-float ABIs are not link-compatible; you must compile your entireprogram with the same ABI, and link with a compatible set of libraries.
-march=nameThis specifies the name of the target ARM architecture. GCC uses this nameto determine what kind of instructions it can emit when generating assemblycode. This option can be used in conjunction with or instead of the ‘-mcpu=’option. Permissible names are: ‘armv2’, ‘armv2a’, ‘armv3’, ‘armv3m’, ‘armv4’,‘armv4t’, ‘armv5’, ‘armv5t’, ‘armv5e’, ‘armv5te’, ‘armv6’, ‘armv6j’, ‘armv6t2’,‘armv6z’, ‘armv6zk’, ‘armv6-m’, ‘armv7’, ‘armv7-a’, ‘armv7-r’, ‘armv7-m’,‘iwmmxt’, ‘iwmmxt2’, ‘ep9312’.
-mapcs-32
-mabi=nameGenerate code for the specified ABI. Permissible values are: ‘apcs-gnu’,‘atpcs’, ‘aapcs’, ‘aapcs-linux’ and ‘iwmmxt’.
-mthumb-interworkGenerate code which supports calling between the ARM and Thumb instructionsets. Without this option the two instruction sets cannot be reliably usedinside one program. The default is ‘-mno-thumb-interwork’, since slightly larger codeis generated when ‘-mthumb-interwork’ is specified.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.