[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [f-cpu] Instruction census



load-linked/store-conditional :

instructions ll/sc that you can find in MIPS I think.

The main idea is to have a store that only occurs if we know there is no
store since the last load linked was called at the same memory place.

To emulate an IA32 XADD :

int XADD (int *slot,int delta) {
    int old,new,stored;
    do {
        asm ("ll %0,[%1]" : "=r"(old) : "m"(slot));
        new = old + delta;
        asm ("sc %0,[%2],%1" : "=r"(new), "=r"(stored) : "m"(slot));
    } while (!stored);
    return old;
}
here I choose the format "SC R1,[R2],R3" where R1 is new data to store at
address [R2] if that address was not dirty by a previous normal store or a
store conditional (R3 is not 0 if stored really occured).

Another emulation, IA32 CMPCHG :

int CMPCHG (int *slot,int *old,int new) {
    int value,stored;

    asm ("ll %0,[%1]" : "=r"(value) : "m"(slot));
    if (value != old) {
        *old = value;
        return 0;
     }
    asm ("sc %0,[%2],%1" : "=r"(new), "=r"(stored) : "m"(slot));
    if (!stored) {
        *old = value;
        return 0;
     }
    return !0;
}

----- Original Message -----
From: "devik" <devik@cdi.cz>
To: <f-cpu@seul.org>
Sent: Wednesday, January 15, 2003 10:37 AM
Subject: Re: [f-cpu] Instruction census



> > BTW what is load-linked/store-conditional ?
> I don't think so or by an other chip maker.

you misunderstood the question, I asked WHAT is
load-linked/store-conditional .. I don't know the name.

devik

*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/

*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/