<div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 11, 2019 at 11:13 PM Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, 11 Jul 2019 at 18:23, Reshabh Sharma <<a href="mailto:reshabhsh@gmail.com" target="_blank">reshabhsh@gmail.com</a>> wrote:<br>
> Correct me if I understood it wrong, keeping global variables at some arbitrary location in memory with a limit of 4GB so that they can be addressed in 32 bits?<br>
<br>
Yes, that's right. The concept is called a "code model". You can play<br>
with -mcmodel=small or large to see how it affects codegen on x86 and<br>
AArch64. Both have "small" as the default, which allows all globals<br>
(and other related things like vtables, literal strings etc) to be<br>
addressed pretty much as if in 32-bit mode.<br></blockquote><div><br></div><div>Thanks, that's cool. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
>> If you adopted similar constraints for RISC-V you could probably use<br>
>> the existing code virtually unchanged.<br>
><br>
> We are trying to support 4GB+ memory in address space 1 using 64 bit pointers in that address space, I guess then this might not apply? What do you think?<br>
<br>
That's mostly making sure 64-bit pointers don't get truncated and get<br>
applied correctly (they can still come from something like mmap, or<br>
even malloc). But you still get to choose layout constraints if you<br>
want.<br>
<br>
I think the main caveat is that JITs often require support for "large"<br>
(i.e. the full 64-bit addressing you've been implementing up to now),<br>
precisely because they might be handed large pointers by mmap.<br>
<br>
BTW, since you're running under 32-bit RISC-V, how do you actually<br>
plan to load from a 64-bit pointer? Isn't the hardware just missing?<br></blockquote><div><br></div><div>We are working on a RV32 GPU ISA for an open source RISCV based GPGPU (<a href="http://bjump.org/manycore/">http://bjump.org/manycore/</a>). So I can easily get the minimal required hardware support for such features :)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Cheers.<br>
<br>
Tim.<br>
</blockquote></div></div></div>