Please sign in to comment.
slightly less trivial boring things
Attemting to run the cross-compiler, even on such a minimal source file, reveals some necessary support routines that aren't needed when compiling the cross-compiler but are needed pretty much immediately in running it. Those routines (and some variables) require at least some of the machine registers' functions to be defined, so have a stab at defining them: - we'll use x5 to hold our lisp return address, since that is defined in the platform ABI as an alternate link register (participating in return address prediction, for Spectre or for worse) - x0 is wired to 0, so define that (and its storage class); also use the platform ABI to define the number (C) stack and frame pointer registers - define args and temporaries in the function argument/return values register region (supported by the RISC-V C extension, in case we can save on instruction space later) - use ABI temporaries for the control (Lisp) stack and frame pointers - put nargs somewhere arbitrary for now
- Loading branch information...
Showing with 77 additions and 1 deletion.