Once again... Linus T. rejected the risc-v patches, judging them to be "garbage" ....
Too rush? well ...no doubt about.
He was partly right, in my opinion, because it wasn't clear which part of the code was RISC-V-only (arch-dependent) and which part was generic.
That's precisely what he also doesn't like with ARM and MIPS too...
Also what was the point? That conversion from/to p_uint32_t to p_uint8_t (C pointer) is "free" on LE but costs an offset of 3 on BE?
If Linus doesn't want that in the Linux kernel, then it basically means RISC-V support for Linux is dead. And with that attitude, who knows what will happen when RISC-V comes up with new extensions that Linus deems garbage.
That rants makes no sense
Also what was the point? That conversion from/to p_uint32_t to p_uint8_t (C pointer) is "free" on LE but costs an offset of 3 on BE?
Converting from uint32_t to uint8_t by writing to and reading from RAM instead of sensibly doing a zero-extension instruction in a register (which works the same no matter what the endianess) is far from "free".
In fact it can be much more expensive than you'd expect because many µarches stall if you try to read from a memory address that is still in the write buffer, and that is all the more likely if there is an access size or alignment mismatch (as there is here).
Even if there is no dedicated zero-extend instruction doing ((my_uint32_t << 24) >> 24) is only two cycles [1] on any post 1985 CPU (68020, 80386, all known RISC), and has the added benefit that by adjusting the constant you can zero extend (or sign extend for int32_t) from any desired bit position.
[1] or at least the same as two back-to-back adds, if they take more than 1 cycle
Having big-endian and little-endian data types is an interesting idea.
A CPU can similarly have BE/LE load/store instructions instead of having endianness either set in stone or as a global setting.
So for instance, instead of just lw, sw, you can have lw.le, lw.be, sw.le, sw.be.

Having big-endian and little-endian data types is an interesting idea.
So I kept that feature of the language because it really made the difference between risking bugs by forgetting to mention a macro that fixes endianess (like with C99 in uboot), and compiling the structs specifying the endianess and size of each field, and then letting the myC compiler do all the work!
struct foo {
LE_uint64_t x;
BE_uint64_t y;
};
void bar(foo &p){
p.y = p.y + p.x;
}
bar(foo&):
mov rax, QWORD PTR [rdi+8]
bswap rax
add rax, QWORD PTR [rdi]
bswap rax
mov QWORD PTR [rdi+8], rax
ret
bar(foo&):
ld a5,8(a0)
rev8 a5,a5
ld a4,0(a0)
add a5,a5,a4
rev8 a5,a5
sd a5,8(a0)
ret
bar(foo&):
ldp x2, x1, [x0]
rev x1, x1
add x1, x1, x2
rev x1, x1
str x1, [x0, 8]
ret
bar(foo&):
.quad .L.bar(foo&),.TOC.@tocbase,0
.L.bar(foo&):
li 9,4
lwbrx 8,9,3
lwbrx 10,0,3
rldimi 10,8,32,0
ld 9,8(3)
add 9,9,10
std 9,8(3)
blr
So I kept that feature of the language because it really made the difference between risking bugs by forgetting to mention a macro that fixes endianess (like with C99 in uboot), and compiling the structs specifying the endianess and size of each field, and then letting the myC compiler do all the work!
C++ circa 1989 (or 1991 if you want to template it) solved this no problems, so with a few simple definitions you could write code like...

typedef struct
{
uint8_t id;
uint32_t magic;
} my_t;
my_t my=
{
/* it is NOT necessary to strictly respect the order of the fields */
.magic=0xdeadcafe,
.id=55
};
(this is only correct with C/99)my_t my=
{
/* it is necessary to strictly respect the order of the fields */
55,
0xdeadcafe
};
(this is correct with C/89 and C/99)
Well with any "object-oriented" language, you can do this and pretty much anything with operators based on a given type. There's nothing fancy about it, unless you find OO fancy, which it probably was 50 years ago.
How did i miss this? Apparently there is a new RISC-V Mainboard for the framework 13
https://deepcomputing.io/product/dc-roma-risc-v-ai-pc/
But i think it's using the same SOC as before?
I really want to replace the old macbook, but i just upgraded the main PC so i will wait a few more months for that. Maybe this board will get debian support in the meantime, maybe something more interesting (and worth waiting a few more months) will appear
I really want to replace the old macbook, but i just upgraded the main PC so i will wait a few more months for that. Maybe this board will get debian support in the meantime, maybe something more interesting (and worth waiting a few more months) will appear
If your MacBook is a G3 or G4 then this is a definite upgrade, or a Core 2 Duo if you're doing things that can use 8 cores rather than 1 or 2. Or an original MacBook Air, which was Core 2 Duo at 1.6 GHz for about 5 seconds, then 1.2 GHz for 30 seconds, then 800 MHz forever.
Next year will see chips from Tenstorrent similar to the Apple M1 (and designed by one of the M1's main architects), but probably at around 2.0 to 2.4 GHz rather than Apple's 3.4 GHz, so a little bit slower single core, but again the RISC-V chips will have more cores than the base level M1. They've said they want to see those chips in as many hands as possible, explicitly including laptops, not only corporate servers.