This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

target/8973: the inteupr handler does not return properly, uses j.d insted of j.d.f


>Number:         8973
>Category:       target
>Synopsis:       the inteupr handler does not return properly, uses j.d insted of j.d.f
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Dec 17 01:26:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Or Poran
>Release:        gcc version 3.2, Configured with: ./configure --prefix=/afs/iil/home/o/oporan/fw/gcc/gcc-3.2/../install/ --target=arc-7-elf.
>Organization:
>Environment:
Linux
gcc as cross-compiler
>Description:
inteupt handler code:
void ivic3_handler (void) __attribute__ ((__interrupt__ ("ilink1")));
void ivic3_handler (void)
{
}

produce the asn code:
    .cpu base
    .section .text
    .align 4
    .global _ivic3_handler
    .type   _ivic3_handler,@function
_ivic3_handler:
    ; interrupt handler
    sub sp,sp,16
    ; BEGIN PROLOGUE ; vars= 0, regs= 0, args= 0, extra= 0
    st fp,[sp]
    mov fp,sp
    ; END PROLOGUE
    ; EPILOGUE
    ld.a fp,[sp,0]
    j.d ilink1
    add sp,sp,16
.Lfe1:
    .size   _ivic3_handler,.Lfe1-_ivic3_handler
    .ident  "GCC: (GNU) 3.2"


the return statement:
    j.d ilink1
should be
    j.d.f (to update the flags)
>How-To-Repeat:

>Fix:
lines 1337 in gcc/config/arc/arc.c
should be replaced with:
    if (fn_type == ARC_FUNCTION_ILINK1 || fn_type == ARC_FUNCTION_ILINK2)
        fprintf (file, "\tj.d.f %s\n", reg_names[regs[fn_type]]);
    else    
        fprintf (file, "\tj.d %s\n", reg_names[regs[fn_type]]);
>Release-Note:
>Audit-Trail:
>Unformatted:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]