From: bugzilla-daemon@libre-riscv.org
To: libre-riscv-dev@lists.libre-riscv.org
Subject: [libre-riscv-dev] [Bug 186] Create decoder for SOC: Power ISA and RISC-V
Date: Thu, 26 Mar 2020 17:41:30 +0000
Message-ID: <bug-186-13-5TVskqa7XJ@http.bugs.libre-riscv.org/> (raw)
In-Reply-To: <bug-186-13@http.bugs.libre-riscv.org/>
http://bugs.libre-riscv.org/show_bug.cgi?id=186
--- Comment #125 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
(In reply to Michael Nolan from comment #124)
> (In reply to Luke Kenneth Casson Leighton from comment #122)
>
> > how many bits is that
> > 0x 1 0000 0000 0000 4444
> >
> > ha, that's amusing. the result is a roll-over from 64-bit arithmetic
> >
> > > Need to sort out setting the carry and overflow flags at some
> > > point though, that'll be more fun...
> >
> > yehyeh. a SPR storing the carry, first. take a look at pearpc,
> > it should show a way to do it (that's easy to interpret)
> > https://github.com/sebastianbiallas/pearpc
>
> Ooops, some of my experiments with carry must have snuck in, sorry.
no worries
> Speaking
> of, I'm getting some weird behavior with carry on qemu. If I run some
> instructions that generate a carry or overflow, then have gdb read the xer
> register, it returns 0. But if I execute a `mfxer r5` or the like and print
> out that register, it gives me the correct value for xer. I'm trying to
> confirm whether this is a bug with qemu or not.
hmmm. if it's a bug in qemu it's one that, i suspect, would have been detected
a loooong time ago. but... you never know...
let's look at the spec:
p70 3.0B "addc":
RT <= (RA) + (RB)
The sum (RA) + (RB) is placed into register RT.
Special Registers Altered:
CA CA32
CR0 (if Rc=1)
SO OV OV32 (if OE=1)
ok so SO (summary overflow), OV (overflow) and OV32 (overflow 32-bit)
all get set, in XER. these are listed on p45 3.2.2
however that's not the "carry" flag: that's *CR0*. which is in... errr...
the Condition Register p45 2.3.1
let's check the pearpc source (yes it's only 32-bit). ppc_alu.c
whereisitwhereisit... ok!
https://github.com/sebastianbiallas/pearpc/blob/master/src/cpu/cpu_generic/ppc_alu.cc#L56
ahh, then as a *separate* concern, if you see the implementation of addcx,
that updatex XER_CA *and* updates CR0:
https://github.com/sebastianbiallas/pearpc/blob/master/src/cpu/cpu_generic/ppc_alu.cc#L86
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
next prev parent reply index
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bug-186-13@http.bugs.libre-riscv.org/>
2020-03-18 15:49 ` bugzilla-daemon
2020-03-18 16:07 ` bugzilla-daemon
2020-03-18 16:12 ` bugzilla-daemon
2020-03-18 17:14 ` bugzilla-daemon
2020-03-18 18:22 ` Luke Kenneth Casson Leighton
2020-03-18 18:23 ` Immanuel, Yehowshua U
2020-03-18 19:27 ` bugzilla-daemon
2020-03-18 19:31 ` bugzilla-daemon
2020-03-18 20:51 ` bugzilla-daemon
2020-03-18 21:23 ` bugzilla-daemon
2020-03-18 21:28 ` bugzilla-daemon
2020-03-18 21:38 ` bugzilla-daemon
2020-03-18 22:13 ` bugzilla-daemon
2020-03-18 23:20 ` bugzilla-daemon
2020-03-18 23:27 ` bugzilla-daemon
2020-03-19 0:21 ` bugzilla-daemon
2020-03-19 0:24 ` bugzilla-daemon
2020-03-19 3:00 ` bugzilla-daemon
2020-03-19 6:56 ` bugzilla-daemon
2020-03-19 15:29 ` bugzilla-daemon
2020-03-19 15:33 ` bugzilla-daemon
2020-03-19 17:11 ` bugzilla-daemon
2020-03-21 15:44 ` bugzilla-daemon
2020-03-21 18:59 ` bugzilla-daemon
2020-03-21 20:10 ` bugzilla-daemon
2020-03-23 20:12 ` bugzilla-daemon
2020-03-23 21:28 ` bugzilla-daemon
2020-03-24 1:28 ` bugzilla-daemon
2020-03-24 1:49 ` bugzilla-daemon
2020-03-24 6:14 ` bugzilla-daemon
2020-03-24 8:50 ` bugzilla-daemon
2020-03-25 12:49 ` bugzilla-daemon
2020-03-25 16:21 ` bugzilla-daemon
2020-03-25 17:17 ` bugzilla-daemon
2020-03-25 17:27 ` bugzilla-daemon
2020-03-25 17:29 ` bugzilla-daemon
2020-03-25 19:43 ` bugzilla-daemon
2020-03-25 19:58 ` bugzilla-daemon
2020-03-25 20:03 ` bugzilla-daemon
2020-03-25 21:20 ` bugzilla-daemon
2020-03-26 12:59 ` Luke Kenneth Casson Leighton
2020-03-26 5:40 ` bugzilla-daemon
2020-03-26 5:54 ` bugzilla-daemon
2020-03-26 11:02 ` bugzilla-daemon
2020-03-26 11:10 ` bugzilla-daemon
2020-03-26 14:13 ` bugzilla-daemon
2020-03-26 14:14 ` bugzilla-daemon
2020-03-26 14:19 ` bugzilla-daemon
2020-03-26 14:43 ` bugzilla-daemon
2020-03-26 14:56 ` bugzilla-daemon
2020-03-26 16:52 ` bugzilla-daemon
2020-03-26 16:57 ` bugzilla-daemon
2020-03-26 17:15 ` bugzilla-daemon
2020-03-26 17:41 ` bugzilla-daemon [this message]
2020-03-26 17:51 ` bugzilla-daemon
2020-03-26 17:56 ` bugzilla-daemon
2020-03-26 18:01 ` bugzilla-daemon
2020-03-26 19:39 ` bugzilla-daemon
2020-03-26 20:29 ` bugzilla-daemon
2020-03-26 20:34 ` bugzilla-daemon
2020-03-26 21:41 ` bugzilla-daemon
[not found] <bug-186-13@https.bugs.libre-soc.org/>
2020-04-09 13:46 ` bugzilla-daemon
2020-04-09 14:01 ` bugzilla-daemon
2020-05-02 4:00 ` bugzilla-daemon
2020-05-02 5:28 ` bugzilla-daemon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-186-13-5TVskqa7XJ@http.bugs.libre-riscv.org/ \
--to=bugzilla-daemon@libre-riscv.org \
--cc=libre-riscv-dev@lists.libre-riscv.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Libre RISC-V Mailing list Archives (accessible via public-inbox)
Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev
Example config snippet for mirrors
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git