mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-02 01:20:47 +09:00
Blackfin: adjust asm constraints with NMI workaround
Newer gcc versions will sometimes use a Preg when "r" constraints, but that'll fail if we use an Ireg in the assignment. So force the code to always use a Dreg. This also fixes early boot crashes for older Blackfin parts when compiled with gcc-4.5. This version ends up selecting the same register for the input and output variables which corrupts the output assignment triggering an exception. P2 = 0xffe02008; /* EVT2 */ R0 = RETS; CALL 1f; RTN; 1: P2 = RETS; <-- BAD RETS = R0; [P2] = P2; <-- BAD Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
This commit is contained in:
parent
e0ae433e92
commit
2e2ed3f4ff
@ -262,7 +262,8 @@ program_nmi_handler(void)
|
||||
"%1 = RETS;" /* Load addr of NMI handler */
|
||||
"RETS = %0;" /* Restore RETS */
|
||||
"[%2] = %1;" /* Write NMI handler */
|
||||
: "=r"(tmp1), "=r"(tmp2) : "ab"(EVT2)
|
||||
: "=d"(tmp1), "=d"(tmp2)
|
||||
: "ab"(EVT2)
|
||||
);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user