Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
da21fa4
[WIP] RISCV64 REL BUILD
clamp03 Oct 26, 2022
9ff3bdc
[WIP] RISCV64 DBG BUILD
clamp03 Nov 8, 2022
499e598
[WIP] FIX
clamp03 Nov 8, 2022
7433745
[WIP] FIX WHAT I DID FOR THREAD STORE TEST
clamp03 Nov 10, 2022
7587b73
[WIP] UPDATE ASSEMBLY FUNCTIONS and ADD CRASH TO UNIMPLEMENTED
clamp03 Nov 10, 2022
c7bd561
[WIP] UPDATE CRTHELPERS
clamp03 Nov 10, 2022
4ca0934
[WIP] UPDATE EXCEPTIONHANDLER AND CALLDESCRWORKERRISCV64
clamp03 Nov 10, 2022
8bdde90
[WIP] UPDATE ACTIVATIONHANDLERWRAPPER
clamp03 Nov 10, 2022
260fdc4
[WIP] CALLSIGNALHANDLEWRAPPER
clamp03 Nov 10, 2022
de1c03e
[WIP] FLOATCONVERSION, DBGHELPERS
clamp03 Nov 10, 2022
1a45b75
[WIP] PAL, ASMCONSTANTS, CONTEXT2
clamp03 Nov 11, 2022
da10fc8
[WIP] REMOVE ACTIVATIONHANDLERWRAPPER, DISPATCHEXCEPTIONWRAPPER
clamp03 Nov 11, 2022
0cb6eb6
[WIP] ADD CRASH INSTRS FOR UNINPLEMENTED
clamp03 Nov 11, 2022
896a978
[WIP] ASMHELPERS
clamp03 Nov 14, 2022
7c9508c
[WIP] PINVOKESTUBS
clamp03 Nov 14, 2022
f6e85fa
[WIP] RESTORE getcontext.S and setcontext.S in libunwind
clamp03 Nov 14, 2022
4c12c26
[WIP] FIX THREADS.CPP
clamp03 Nov 15, 2022
f5e184d
[WIP] FIX PRECODE
clamp03 Nov 15, 2022
df30a97
[WIP] SET REG
clamp03 Nov 15, 2022
322c2b9
[WIP] FIX INTERPRETER
clamp03 Nov 21, 2022
1120e51
[WIP] Revert Interpreter Code Changes
clamp03 Nov 24, 2022
93d30e7
[WIP] JIT
clamp03 Nov 24, 2022
47938e6
[WIP] JIT
clamp03 Nov 25, 2022
a01b735
[WIP] JIT
clamp03 Nov 30, 2022
7bf58ed
[WIP] JIT
clamp03 Dec 1, 2022
da5220a
[WIP] JIT
clamp03 Dec 2, 2022
c7063e9
[WIP] JIT
clamp03 Dec 5, 2022
55a83da
[WIP] JIT
clamp03 Dec 5, 2022
894ac25
[WIP] JIT
clamp03 Dec 6, 2022
a5d54c3
[WIP] JIT
clamp03 Dec 7, 2022
6377887
[WIP] JIT
clamp03 Dec 9, 2022
95119c7
[WIP] JIT
clamp03 Dec 19, 2022
eb939c1
[WIP] JIT
clamp03 Dec 20, 2022
c241e32
[WIP] JIT
clamp03 Dec 20, 2022
0893b92
[WIP] JIT
clamp03 Dec 20, 2022
a03513a
[WIP] JIT
clamp03 Dec 21, 2022
e714c1a
[WIP] JIT
clamp03 Dec 22, 2022
dfde411
[WIP] JIT
clamp03 Dec 22, 2022
3683323
[WIP] JIT
clamp03 Dec 23, 2022
733a4d5
[WIP] JIT
clamp03 Dec 26, 2022
18c37ce
[WIP] JIT
clamp03 Dec 27, 2022
ade1a59
[WIP] JIT
clamp03 Dec 29, 2022
b3cf2ae
[WIP] JIT
clamp03 Dec 29, 2022
589f6a3
[WIP] JIT
clamp03 Jan 2, 2023
8f91e27
[WIP] JIT
clamp03 Jan 2, 2023
6882d87
[WIP] FIX JIT ERRORS
clamp03 Jan 3, 2023
ca1ad78
[WIP] FIX PROLOG REGISTER SAVES
clamp03 Jan 3, 2023
29699c1
[WIP] FIX and UPDATE JIT
clamp03 Jan 3, 2023
54f892b
[WIP] IMPLEMENTS SHIFT, ROTATE, NEG, NOT and FENCE
clamp03 Jan 3, 2023
558f214
[WIP] JIT UPDATE
clamp03 Jan 4, 2023
bc14f0a
[WIP] FIX DISP
clamp03 Jan 5, 2023
d8fe5ca
[WIP] JIT DEBUGGING
clamp03 Jan 5, 2023
4bc1b27
[WIP] JIT
clamp03 Jan 9, 2023
e1da0a6
[WIP] JIT
clamp03 Jan 10, 2023
b5f8bd5
[WIP] JIT
clamp03 Jan 11, 2023
f23ef1b
[WIP] JIT
clamp03 Jan 11, 2023
3fbfff1
[WIP] FIX JIT
clamp03 Jan 12, 2023
6b64b3d
[WIP] JIT
clamp03 Jan 12, 2023
52aafd2
[WIP] JIT
clamp03 Jan 12, 2023
eea327c
[WIP] JIT
clamp03 Jan 13, 2023
81fe2a0
[WIP] JIT
clamp03 Jan 13, 2023
13650ae
[WIP] JIT
clamp03 Jan 13, 2023
e753f43
[WIP] JIT
clamp03 Jan 16, 2023
d44f9ec
[WIP] JIT
clamp03 Jan 16, 2023
a601385
[WIP] JIT
clamp03 Jan 17, 2023
12ccf4f
[WIP] JIT
clamp03 Jan 17, 2023
8a87d86
[WIP] JIT
clamp03 Jan 18, 2023
c00a4cd
[WIP] JIT
clamp03 Jan 18, 2023
57df5a9
[WIP] JIT
clamp03 Jan 19, 2023
0db2c5c
[WIP] JIT
clamp03 Jan 19, 2023
be097ae
[WIP] JIT
clamp03 Jan 19, 2023
5f2eb7b
[WIP] JIT
clamp03 Jan 20, 2023
e9b852e
[WIP] JIT
clamp03 Jan 20, 2023
4709724
[WIP] JIT
clamp03 Jan 20, 2023
c58aee1
[WIP] JIT
clamp03 Jan 20, 2023
498276f
[WIP] JIT
clamp03 Jan 20, 2023
5cae87a
[WIP] JIT
clamp03 Jan 30, 2023
af66496
[WIP] JIT
clamp03 Jan 31, 2023
a6791ed
[WIP] JIT
clamp03 Feb 1, 2023
15b448e
[WIP] JIT
clamp03 Feb 1, 2023
407e25d
[WIP] JIT
clamp03 Feb 1, 2023
2b3b528
[WIP] JIT
clamp03 Feb 2, 2023
5638069
[WIP] JIT
clamp03 Feb 2, 2023
9641baf
[WIP] JIT
clamp03 Feb 3, 2023
5070785
[WIP] JIT
clamp03 Feb 3, 2023
553c1fd
[WIP] JIT
clamp03 Feb 7, 2023
e7a0474
[WIP] TESTS
clamp03 Feb 13, 2023
e147059
[WIP] JIT
clamp03 Feb 13, 2023
91ce589
[WIP] PALTEST
clamp03 Feb 15, 2023
0827ede
[WIP] FIX AFTER REBASE
clamp03 Feb 17, 2023
6b81f2d
[WIP] Remove commented codes
clamp03 Feb 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[WIP] ADD CRASH INSTRS FOR UNINPLEMENTED
  • Loading branch information
clamp03 committed Feb 17, 2023
commit 0cb6eb6f5c9bcd37646c14e0d3e6ec0e50df5598
110 changes: 73 additions & 37 deletions src/coreclr/vm/riscv64/asmhelpers.S
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@
// #error "TODO-RISCV64: missing implementation"

LEAF_ENTRY GetCurrentIP, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END GetCurrentIP, _TEXT

// LPVOID __stdcall GetCurrentSP(void)//
LEAF_ENTRY GetCurrentSP, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END GetCurrentSP, _TEXT

//-----------------------------------------------------------------------------
Expand Down Expand Up @@ -46,51 +48,59 @@ LEAF_END GetCurrentSP, _TEXT
// and each entry can be written atomically
//
WRITE_BARRIER_ENTRY JIT_UpdateWriteBarrierState
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
WRITE_BARRIER_END JIT_UpdateWriteBarrierState

// ----------------------------------------------------------------------------------------
// __declspec(naked) void F_CALL_CONV JIT_WriteBarrier_Callable(Object **dst, Object* val)
LEAF_ENTRY JIT_WriteBarrier_Callable, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_WriteBarrier_Callable, _TEXT


.balign 64 // Align to power of two at least as big as patchable literal pool so that it fits optimally in cache line
// ------------------------------------------------------------------
// Start of the writeable code region
LEAF_ENTRY JIT_PatchedCodeStart, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_PatchedCodeStart, _TEXT

// void JIT_ByRefWriteBarrier
WRITE_BARRIER_ENTRY JIT_ByRefWriteBarrier
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
WRITE_BARRIER_END JIT_ByRefWriteBarrier

//-----------------------------------------------------------------------------
// Simple WriteBarriers
// void JIT_CheckedWriteBarrier(Object** dst, Object* src)
//
WRITE_BARRIER_ENTRY JIT_CheckedWriteBarrier
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
WRITE_BARRIER_END JIT_CheckedWriteBarrier

// void JIT_WriteBarrier(Object** dst, Object* src)
//
WRITE_BARRIER_ENTRY JIT_WriteBarrier
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
WRITE_BARRIER_END JIT_WriteBarrier


WRITE_BARRIER_ENTRY JIT_WriteBarrier_Table
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
WRITE_BARRIER_END JIT_WriteBarrier_Table

// ------------------------------------------------------------------
// End of the writeable code region
LEAF_ENTRY JIT_PatchedCodeLast, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_PatchedCodeLast, _TEXT


Expand All @@ -110,11 +120,13 @@ LEAF_END JIT_PatchedCodeLast, _TEXT
// the register here. That's what this macro does.
//
.macro RestoreRegMS regIndex, reg
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
.endm

NESTED_ENTRY ThePreStub, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END ThePreStub, _TEXT

// ------------------------------------------------------------------\
Expand All @@ -124,21 +136,24 @@ NESTED_END ThePreStub, _TEXT
// MachState *pState
// )
LEAF_ENTRY HelperMethodFrameRestoreState, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END HelperMethodFrameRestoreState, _TEXT

//-----------------------------------------------------------------------------
// This routine captures the machine state. It is used by helper method frame
//-----------------------------------------------------------------------------
//void LazyMachStateCaptureState(struct LazyMachState *pState)//
LEAF_ENTRY LazyMachStateCaptureState, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END LazyMachStateCaptureState, _TEXT

// ------------------------------------------------------------------
// The call in ndirect import precode points to this function.
NESTED_ENTRY NDirectImportThunk, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END NDirectImportThunk, _TEXT

#ifdef FEATURE_PREJIT
Expand All @@ -159,21 +174,23 @@ NESTED_END NDirectImportThunk, _TEXT
// $t2 = Address of thunk

NESTED_ENTRY VirtualMethodFixupStub, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END VirtualMethodFixupStub, _TEXT
#endif // FEATURE_PREJIT

// void SinglecastDelegateInvokeStub(Delegate *pThis)
LEAF_ENTRY SinglecastDelegateInvokeStub, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
LEAF_END SinglecastDelegateInvokeStub, _TEXT

// ------------------------------------------------------------------
// ThePreStubPatch()
LEAF_ENTRY ThePreStubPatch, _TEXT
.globl C_FUNC(ThePreStubPatchLabel)
C_FUNC(ThePreStubPatchLabel):
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END ThePreStubPatch, _TEXT

#ifdef FEATURE_PREJIT
Expand All @@ -182,19 +199,22 @@ LEAF_END ThePreStubPatch, _TEXT
//
// The stub dispatch thunk which transfers control to StubDispatchFixupWorker.
NESTED_ENTRY StubDispatchFixupStub, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END StubDispatchFixupStub, _TEXT
#endif

NESTED_ENTRY TheUMEntryPrestub, _TEXT, UnhandledExceptionHandlerUnix
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END TheUMEntryPrestub, _TEXT

// ------------------------------------------------------------------
// void* JIT_GetSharedGCStaticBase(SIZE_T moduleDomainID, DWORD dwClassDomainID)

LEAF_ENTRY JIT_GetSharedGCStaticBase_SingleAppDomain, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_GetSharedGCStaticBase_SingleAppDomain, _TEXT

// ------------------------------------------------------------------
Expand All @@ -205,37 +225,42 @@ LEAF_END JIT_GetSharedGCStaticBase_SingleAppDomain, _TEXT
//

NESTED_ENTRY ResolveWorkerChainLookupAsmStub, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END ResolveWorkerChainLookupAsmStub, _TEXT

// ------------------------------------------------------------------
// void ResolveWorkerAsmStub(args in regs $a0-$a7 & stack, t8:IndirectionCellAndFlags, $t2:DispatchToken)
//
// The stub dispatch thunk which transfers control to VSD_ResolveWorker.
NESTED_ENTRY ResolveWorkerAsmStub, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END ResolveWorkerAsmStub, _TEXT

// ------------------------------------------------------------------
// void* JIT_GetSharedNonGCStaticBaseNoCtor(SIZE_T moduleDomainID, DWORD dwClassDomainID)

LEAF_ENTRY JIT_GetSharedNonGCStaticBaseNoCtor_SingleAppDomain, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_GetSharedNonGCStaticBaseNoCtor_SingleAppDomain, _TEXT

// ------------------------------------------------------------------
// void* JIT_GetSharedGCStaticBaseNoCtor(SIZE_T moduleDomainID, DWORD dwClassDomainID)

LEAF_ENTRY JIT_GetSharedGCStaticBaseNoCtor_SingleAppDomain, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_GetSharedGCStaticBaseNoCtor_SingleAppDomain, _TEXT


#ifdef FEATURE_HIJACK
// ------------------------------------------------------------------
// Hijack function for functions which return a scalar type or a struct (value type)
NESTED_ENTRY OnHijackTripThread, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END OnHijackTripThread, _TEXT

#endif // FEATURE_HIJACK
Expand All @@ -258,13 +283,15 @@ GenerateRedirectedHandledJITCaseStub GCStress
// ------------------------------------------------------------------
// This helper enables us to call into a funclet after restoring Fp register
NESTED_ENTRY CallEHFunclet, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END CallEHFunclet, _TEXT

// This helper enables us to call into a filter funclet by passing it the CallerSP to lookup the
// frame pointer for accessing the locals in the parent method.
NESTED_ENTRY CallEHFilterFunclet, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END CallEHFilterFunclet, _TEXT

#ifdef FEATURE_COMINTEROP
Expand All @@ -279,15 +306,17 @@ NESTED_END CallEHFilterFunclet, _TEXT
// buffer pointed to by $a1 on entry contains the float or double argument as appropriate
//
LEAF_ENTRY getFPReturn, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END getFPReturn, _TEXT

// ------------------------------------------------------------------
// Function used by COM interop to set floating point return value (since it's not in the same
// register(s) as non-floating point values).
//
LEAF_ENTRY setFPReturn, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END setFPReturn, _TEXT

#endif // FEATURE_COMINTEROP
Expand All @@ -300,25 +329,29 @@ LEAF_END setFPReturn, _TEXT
// void* JIT_GetSharedNonGCStaticBase(SIZE_T moduleDomainID, DWORD dwClassDomainID)

LEAF_ENTRY JIT_GetSharedNonGCStaticBase_SingleAppDomain, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_GetSharedNonGCStaticBase_SingleAppDomain, _TEXT

#ifdef FEATURE_READYTORUN

NESTED_ENTRY DelayLoad_MethodCall_FakeProlog, _TEXT, NoHandler
C_FUNC(DelayLoad_MethodCall):
.global C_FUNC(DelayLoad_MethodCall)
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
PATCH_LABEL ExternalMethodFixupPatchLabel
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END DelayLoad_MethodCall_FakeProlog, _TEXT


.macro DynamicHelper frameFlags, suffix
NESTED_ENTRY DelayLoad_Helper\suffix\()_FakeProlog, _TEXT, NoHandler
DelayLoad_Helper\suffix:
.global DelayLoad_Helper\suffix
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END DelayLoad_Helper\suffix\()_FakeProlog, _TEXT
.endm

Expand All @@ -332,7 +365,8 @@ DynamicHelper DynamicHelperFrameFlags_ObjectArg | DynamicHelperFrameFlags_Object

// ------------------------------------------------------------------
LEAF_ENTRY JIT_ProfilerEnterLeaveTailcallStub, _TEXT
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
LEAF_END JIT_ProfilerEnterLeaveTailcallStub, _TEXT

// ------------------------------------------------------------------
Expand All @@ -344,7 +378,8 @@ LEAF_END JIT_ProfilerEnterLeaveTailcallStub, _TEXT
// ------------------------------------------------------------------
.macro GenerateProfileHelper helper, flags
NESTED_ENTRY \helper\()Naked, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END \helper\()Naked, _TEXT
.endm

Expand All @@ -358,7 +393,8 @@ GenerateProfileHelper ProfileTailcall, PROFILE_TAILCALL
#ifdef FEATURE_TIERED_COMPILATION

NESTED_ENTRY OnCallCountThresholdReachedStub, _TEXT, NoHandler
// TOOD RISCV64 NYI
// TODO RISCV64 NYI
sw ra, 0(x0)
NESTED_END OnCallCountThresholdReachedStub, _TEXT

#endif // FEATURE_TIERED_COMPILATION