summaryrefslogtreecommitdiffstats
path: root/private/ntos/fw/alpha/stubs.c
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/fw/alpha/stubs.c
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ntos/fw/alpha/stubs.c')
-rw-r--r--private/ntos/fw/alpha/stubs.c376
1 files changed, 376 insertions, 0 deletions
diff --git a/private/ntos/fw/alpha/stubs.c b/private/ntos/fw/alpha/stubs.c
new file mode 100644
index 000000000..c64c86266
--- /dev/null
+++ b/private/ntos/fw/alpha/stubs.c
@@ -0,0 +1,376 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+Copyright (c) 1993 Digital Equipment Corporation
+
+Module Name:
+
+ stubs.c
+
+Abstract:
+
+ This module implements stub routines for the firmware, FailSafe
+ Booter, and the Alpha AXP/Jensen ROM update tool (JNUPDATE.EXE).
+
+Author:
+
+ Lluia Abello (lluis) 3-Oct-1991
+
+Environment:
+
+ Kernel mode only.
+
+Revision History:
+
+ John DeRosa [DEC] 11-May-1993
+
+ Made Alpha AXP modification.
+
+--*/
+
+#include "ntos.h"
+#include "fwp.h"
+#include "fwstring.h"
+
+LONG
+DebugPrint(
+ IN PSTRING Output
+ );
+
+
+#if defined(MORGAN)
+#include "ex.h"
+
+PVOID
+ExAllocatePool(
+ IN POOL_TYPE PoolType,
+ IN ULONG NumberOfBytes
+ )
+{
+ return((PVOID)NULL);
+}
+
+
+
+VOID
+KeRaiseIrql (
+ KIRQL NewIrql,
+ PKIRQL OldIrql
+ )
+{
+ return;
+}
+
+
+
+VOID
+KeLowerIrql (
+ KIRQL NewIrql
+ )
+{
+ return;
+}
+
+
+#endif // MORGAN
+
+
+
+#ifndef JNUPDATE
+
+VOID
+FwpFreeStub(
+ IN PVOID Buffer
+ )
+{
+}
+
+VOID
+FwpReservedRoutine(
+ VOID
+ )
+{
+ FwPrint(ST_RESERVED_ROUTINE_MSG);
+ return;
+}
+
+#endif
+
+
+
+//
+// This is defined in ntos\rtl\imagedir.c. This is linked in unnecessarily
+// on a normal build, and is needed on a kd build. The problem is that the
+// rtl copy has an try/except block, which causes SEH code to be pulled into
+// the link, which we are not prepared for. So, this copy is identical to
+// the rtl copy except it has no try/except form.
+//
+
+PIMAGE_NT_HEADERS
+RtlImageNtHeader (
+ IN PVOID Base
+ )
+
+/*++
+
+Routine Description:
+
+ This function returns the address of the NT Header.
+
+Arguments:
+
+ Base - Supplies the base of the image.
+
+Return Value:
+
+ Returns the address of the NT Header.
+
+--*/
+
+{
+
+ PIMAGE_NT_HEADERS NtHeaders;
+
+ if (Base != NULL &&
+ Base != (PVOID)-1
+ ) {
+// try {
+ if (((PIMAGE_DOS_HEADER)Base)->e_magic == IMAGE_DOS_SIGNATURE) {
+ NtHeaders = (PIMAGE_NT_HEADERS)((PCHAR)Base + ((PIMAGE_DOS_HEADER)Base)->e_lfanew);
+ if (NtHeaders->Signature == IMAGE_NT_SIGNATURE) {
+ return NtHeaders;
+ }
+ }
+
+// } except(EXCEPTION_EXECUTE_HANDLER) {
+// return NULL;
+// }
+
+ }
+
+ return NULL;
+}
+
+
+
+
+#ifndef JNUPDATE
+
+#ifndef ALPHA_FW_KDHOOKS
+
+//
+// This must not be defined for kd link.
+//
+
+LONG
+DebugPrint(
+ IN PSTRING Output
+ )
+
+/*++
+
+Routine Description:
+
+ This function is defined in rtl\alpha\debugstb.s. There, it calls
+ BREAK_DEBUG_PRINT, which is defined in public\sdk\inc\kxalpha.h to
+ do a call_pal callkd, which in the NT PALcode will invoke the
+ AlphaKd link.
+
+ The normal firmware PALcode has no AlphaKd support, so DebugPrint is
+ stubbed off here. There are references to DebugPrint in the bldr
+ directory and some fw files.
+
+Arguments:
+
+
+Return Value:
+
+--*/
+
+{
+ return (0);
+}
+
+#endif
+
+#endif
+
+
+#ifndef JNUPDATE
+
+VOID
+RtlInitString(
+ OUT PSTRING DestinationString,
+ IN PCSZ SourceString OPTIONAL
+ )
+
+/*++
+
+Routine Description:
+
+ The RtlInitString function initializes an NT counted string.
+ The DestinationString is initialized to point to the SourceString
+ and the Length and MaximumLength fields of DestinationString are
+ initialized to the length of the SourceString, which is zero if
+ SourceString is not specified.
+
+ This is a copy of the same function in \nt\private\ntos\rtl\string.c.
+ It is here to minimize what the linker drags into the image.
+
+Arguments:
+
+ DestinationString - Pointer to the counted string to initialize
+
+ SourceString - Optional pointer to a null terminated string that
+ the counted string is to point to.
+
+
+Return Value:
+
+ None.
+
+--*/
+
+{
+ DestinationString->Length = 0;
+ DestinationString->Buffer = (PCHAR)SourceString;
+ if (ARGUMENT_PRESENT( SourceString )) {
+ while (*SourceString++) {
+ DestinationString->Length++;
+ }
+
+ DestinationString->MaximumLength = (SHORT)(DestinationString->Length+1);
+ }
+ else {
+ DestinationString->MaximumLength = 0;
+ }
+}
+
+#endif
+
+#if (!defined FAILSAFE_BOOTER) && (!defined JNUPDATE)
+
+
+//
+// This stub is needed by some function in the rtl library.
+//
+
+NTSTATUS
+ZwQuerySystemInformation (
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ OUT PVOID SystemInformation,
+ IN ULONG SystemInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ )
+
+{
+ return;
+}
+
+#endif
+
+
+VOID
+FwErrorStackUnderflow (
+ IN ULONG Caller,
+ IN ULONG CallerOfTheCaller,
+ IN ULONG CallerRequestedStackArea
+ )
+
+/*++
+
+Routine Description:
+
+ A function was called that requested a stack area too large for
+ the current Firmware stack. The firmware _RtlCheckStack function
+ (see fwchkstk.s) calls this function to print out the fatal error
+ message.
+
+ The 64KB underneath the Firmware stack is used as a panic stack.
+
+Arguments:
+
+ Caller The address of the function that tried to
+ allocate the stack space.
+
+ CallerOfTheCaller The address of the function that called the
+ function held in "Caller".
+
+ CallerRequestedStackArea The amount of stack space requested by
+ "Caller".
+
+Return Value:
+
+ This never returns.
+
+--*/
+
+{
+ VenSetScreenColor(ArcColorRed, ArcColorWhite);
+ VenPrint(ST_STACK_UNDERFLOW_1_MSG);
+ VenPrint2(ST_STACK_UNDERFLOW_2_MSG, Caller, CallerOfTheCaller);
+ VenPrint2(ST_STACK_UNDERFLOW_3_MSG,
+ CallerRequestedStackArea,
+ FW_STACK_LOWER_BOUND);
+
+#if (!defined FAILSAFE_BOOTER) && (!defined JNUPDATE)
+
+ VenPrint(ST_HIT_KEY_FOR_MONITOR_MSG);
+ VenSetScreenColor(ArcColorWhite, ArcColorBlue);
+
+ FwWaitForKeypress(TRUE);
+
+ FwMonitor(0); // Should never return.
+
+#endif
+
+ while (TRUE) {
+ }
+}
+
+
+#ifndef JNUPDATE
+
+VOID
+KeFlushIoBuffers (
+ IN PMDL Mdl,
+ IN BOOLEAN ReadOperation,
+ IN BOOLEAN DmaOperation
+ )
+
+/*++
+
+Routine Description:
+
+ This function flushes the I/O buffer specified by the memory descriptor
+ list from the data cache on the current processor.
+
+Arguments:
+
+ Mdl - Supplies a pointer to a memory descriptor list that describes the
+ I/O buffer location.
+
+ ReadOperation - Supplies a boolean value that describes whether the I/O
+ operation is a read into memory.
+
+ DmaOperation - Supplies a boolean value that describes whether the I/O
+ operation is a DMA operation.
+
+Return Value:
+
+ None.
+
+--*/
+{
+
+ //
+ // temptemp
+ //
+ // This function must distribute the flush in an MP system.
+ //
+
+ HalFlushIoBuffers( Mdl, ReadOperation, DmaOperation );
+ return;
+}
+
+#endif