ReactOS  0.4.14-dev-114-gc8cbd56
mach.c File Reference
#include "freeldr.h"
#include "machine.h"
#include "ppcmmu/mmu.h"
#include "of.h"
#include "prep.h"
#include "compat.h"
Include dependency graph for mach.c:

Go to the source code of this file.

Functions

void BootMain (PSTR CmdLine)
 
void PpcOfwPutChar (int ch)
 
int PpcFindDevice (int depth, int parent, char *devname, int *nth)
 
BOOLEAN PpcConsKbHit ()
 
int PpcConsGetCh ()
 
void PpcVideoClearScreen (UCHAR Attr)
 
VOID PpcVideoGetDisplaySize (PULONG Width, PULONG Height, PULONG Depth)
 
ULONG PpcVideoGetBufferSize ()
 
VIDEODISPLAYMODE PpcVideoSetDisplayMode (char *DisplayMode, BOOLEAN Init)
 
VOID PpcVideoSetTextCursorPosition (ULONG X, ULONG Y)
 
VOID PpcVideoHideShowTextCursor (BOOLEAN Show)
 
VOID PpcVideoPutChar (int Ch, UCHAR Attr, unsigned X, unsigned Y)
 
VOID PpcVideoCopyOffScreenBufferToVRAM (PVOID Buffer)
 
BOOLEAN PpcVideoIsPaletteFixed ()
 
VOID PpcVideoSetPaletteColor (UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
 
VOID PpcVideoGetPaletteColor (UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
 
VOID PpcVideoSync ()
 
VOID PpcInitializeMmu ()
 
ULONG PpcPrepGetMemoryMap (PBIOS_MEMORY_MAP BiosMemoryMap, ULONG MaxMemoryMapSize)
 
ULONG PpcGetMemoryMap (PBIOS_MEMORY_MAP BiosMemoryMap, ULONG MaxMemoryMapSize)
 
BOOLEAN PpcDiskReadLogicalSectors (ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer)
 
BOOLEAN PpcDiskGetDriveGeometry (ULONG DriveNumber, PGEOMETRY DriveGeometry)
 
ULONG PpcDiskGetCacheableBlockCount (ULONG DriveNumber)
 
TIMEINFOPpcGetTime (VOID)
 
VOID NarrowToWide (WCHAR *wide_name, char *name)
 
VOID OfwCopyDeviceTree (PCONFIGURATION_COMPONENT_DATA ParentKey, char *name, int innode, ULONG *BusNumber, ULONG *DiskController, ULONG *DiskNumber)
 
PCONFIGURATION_COMPONENT_DATA PpcHwDetect ()
 
VOID PpcHwIdle (VOID)
 
void PpcDefaultMachVtbl ()
 
void PpcOfwInit ()
 
void PpcInit (of_proxy the_ofproxy)
 
void MachInit (const char *CmdLine)
 
void beep ()
 
UCHAR NTAPI READ_PORT_UCHAR (PUCHAR Address)
 
void WRITE_PORT_UCHAR (PUCHAR Address, UCHAR Value)
 
VOID __cdecl BootLinuxKernel (IN ULONG KernelSize, IN PVOID KernelCurrentLoadAddress, IN PVOID KernelTargetLoadAddress, IN UCHAR DriveNumber, IN ULONG PartitionNumber)
 
VOID __cdecl ChainLoadBiosBootSectorCode (IN UCHAR BootDrive OPTIONAL, IN ULONG BootPartition OPTIONAL)
 
void DbgBreakPoint ()
 

Variables

ULONG CacheSizeLimit
 
of_proxy ofproxy
 
voidPageDirectoryStart
 
voidPageDirectoryEnd
 
static int chosen_package
 
static int stdin_handle
 
static int stdout_handle
 
static int part_handle = -1
 
int mmu_handle = 0
 
int claimed [4]
 
BOOLEAN AcpiPresent = FALSE
 
CHAR FrLdrBootPath [MAX_PATH] = ""
 
CHAR BootPart [MAX_PATH] = ""
 
CHAR CmdLine [MAX_PATH] = "bootprep"
 
jmp_buf jmp
 
volatile charvideo_mem = 0
 
int mmu_initialized = 0
 
int mem_range_end
 

Function Documentation

◆ beep()

void beep ( )

Definition at line 525 of file mach.c.

525  {
526 }

◆ BootLinuxKernel()

VOID __cdecl BootLinuxKernel ( IN ULONG  KernelSize,
IN PVOID  KernelCurrentLoadAddress,
IN PVOID  KernelTargetLoadAddress,
IN UCHAR  DriveNumber,
IN ULONG  PartitionNumber 
)

Definition at line 536 of file mach.c.

542 {
543  ofw_exit();
544 }

◆ BootMain()

void BootMain ( PSTR  CmdLine)

◆ ChainLoadBiosBootSectorCode()

VOID __cdecl ChainLoadBiosBootSectorCode ( IN UCHAR BootDrive  OPTIONAL,
IN ULONG BootPartition  OPTIONAL 
)

Definition at line 546 of file mach.c.

549 {
550  ofw_exit();
551 }

◆ DbgBreakPoint()

void DbgBreakPoint ( void  )

Definition at line 553 of file mach.c.

553  {
554  __asm__("twi 31,0,0");
555 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

Referenced by __cxa_pure_virtual(), __declspec(), ARPTransmit(), BaseInitializeContext(), CsrApiRequestThread(), CsrCaptureArguments(), CsrIdentifyAlertableThread(), CsrSetPriorityClass(), CsrShutdownProcesses(), CsrValidateMessageBuffer(), DbgUiRemoteBreakin(), DeviceInterfaceChangeCallback(), Dispatch_fnDeviceIoControl(), DriverEntry(), EHCI_InterruptTransfer(), EHCI_QueryEndpointRequirements(), EHCI_SetAsyncEndpointState(), EHCI_SetEndpointStatus(), EHCI_SubmitTransfer(), EHCI_SuspendController(), ExAllocatePoolWithTag(), ExpInsertPoolTracker(), ExpRemovePoolTracker(), ExpWaitForResource(), FatalExit(), FatCompleteRequest_Real(), FatExceptionFilter(), FatMultiAsyncCompletionRoutine(), FatMultiSyncCompletionRoutine(), FatSingleAsyncCompletionRoutine(), FatSingleSyncCompletionRoutine(), HalClearSoftwareInterrupt(), HalpAddDevice(), HalpGetParameters(), HalpOpcodeInvalid(), HalRequestSoftwareInterrupt(), HalReturnToFirmware(), IKsPin_PinStatePropertyHandler(), KeFlushIoBuffers(), KeStartThread(), KeUpdateRunTime(), KiCheckTimerTable(), KiIpiServiceRoutine(), KsPinAttemptProcessing(), KsStreamPointerAdvance(), KsStreamPointerAdvanceOffsets(), KsStreamPointerAdvanceOffsetsAndUnlock(), KsStreamPointerDelete(), KsStreamPointerGetNextClone(), LdrpInitializeProcess(), LdrpRunInitializeRoutines(), MiSubsectionConsistent(), NdisInitializeWrapper(), NtProcessStartup(), ObInsertObject(), OHCI_InsertEndpointInSchedule(), OHCI_PollAsyncEndpoint(), OHCI_QueryEndpointRequirements(), OHCI_RemoveEndpointFromSchedule(), PciBeginStateTransition(), PciDispatchIrp(), PcRegisterSubdevice(), PinPropertyHandler(), PspCatchCriticalBreak(), Reboot(), RtlApplicationVerifierStop(), RtlAssert(), RtlInterlockedPushListSList(), RtlpDphAllocateVm(), RtlpDphEnterCriticalSection(), RtlpDphFreeVm(), RtlpDphPointerFromHandle(), RtlpDphProtectVm(), RtlpDphRemoveFromAvailableList(), RtlpPageHeapAllocate(), RtlpPageHeapDestroy(), RtlpPageHeapFree(), RxAssert(), SetLastError(), SmpAllocateSessionId(), SmpUnhandledExceptionFilter(), SpiParseDeviceInfo(), StreamClassDebugAssert(), UhciInterruptService(), UhciQueryEndpointRequirements(), UhciRHPortResetComplete(), UhciStopController(), USBH_ChangeIndicationWorker(), USBH_CompletePortWakeIrpsWorker(), USBH_DeviceControl(), USBH_FdoIdleNotificationCallback(), USBH_FdoPower(), USBH_FdoQueryBusRelations(), USBH_FdoStartDevice(), USBH_FdoStopDevice(), USBH_FdoWWIrpIoCompletion(), USBH_FlushPortPwrList(), USBH_HubCompleteQueuedPortIdleIrps(), USBH_HubCompleteQueuedPortWakeIrps(), USBH_HubDispatch(), USBH_HubQueuePortIdleIrps(), USBH_HubQueuePortWakeIrps(), USBH_PdoDispatch(), USBH_PdoInternalControl(), USBH_PdoPnP(), USBH_PdoStopDevice(), USBH_PdoUrbFilter(), USBH_PowerIrpCompletion(), USBH_ProcessPortStateChange(), USBH_SelectConfigOrInterfaceComplete(), USBHUB_IrpStub(), USBPORT_AllocateBandwidthUSB2(), USBPORT_Dispatch(), USBPORT_DmaEndpointWorker(), USBPORT_PdoDevicePowerState(), USBPORT_RestoreDevice(), USBPORT_RootHubClassCommand(), USBPORT_RootHubCreateDevice(), USBPORT_SplitBulkInterruptTransfer(), USBPORT_StopDevice(), UserLoadKbdDll(), WdmAudControlOpenMixer(), and wmain().

◆ MachInit()

void MachInit ( const char CmdLine)

Definition at line 484 of file mach.c.

484  {
485  int i, len;
486  char *sep;
487 
488  BootPart[0] = 0;
489  FrLdrBootPath[0] = 0;
490 
491  printf( "Determining boot device: [%s]\n", CmdLine );
492 
493  sep = NULL;
494  for( i = 0; i < strlen(CmdLine); i++ ) {
495  if( strncmp(CmdLine + i, "boot=", 5) == 0) {
496  strcpy(BootPart, CmdLine + i + 5);
497  sep = strchr(BootPart, ',');
498  if( sep )
499  *sep = 0;
500  while(CmdLine[i] && CmdLine[i]!=',') i++;
501  }
502  }
503 
504  if( strlen(BootPart) == 0 ) {
505  if (ofproxy)
506  len = ofw_getprop(chosen_package, "bootpath",
507  FrLdrBootPath, sizeof(FrLdrBootPath));
508  else
509  len = 0;
510  if( len < 0 ) len = 0;
511  FrLdrBootPath[len] = 0;
512  printf( "Boot Path: %s\n", FrLdrBootPath );
513 
514  sep = strrchr(FrLdrBootPath, ',');
515 
517  if( sep ) {
518  BootPart[sep - FrLdrBootPath] = 0;
519  }
520  }
521 
522  printf( "FreeLDR starting (boot partition: %s)\n", BootPart );
523 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
CHAR BootPart[MAX_PATH]
Definition: mach.c:34
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
CHAR CmdLine[MAX_PATH]
Definition: mach.c:34
GLenum GLsizei len
Definition: glext.h:6722
static int chosen_package
Definition: mach.c:30
of_proxy ofproxy
Definition: mach.c:28
char * strchr(const char *String, int ch)
Definition: utclib.c:501
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
CHAR FrLdrBootPath[MAX_PATH]
Definition: mach.c:34
#define printf
Definition: config.h:203

◆ NarrowToWide()

VOID NarrowToWide ( WCHAR wide_name,
char name 
)

Definition at line 299 of file mach.c.

300 {
301  char *copy_name;
302  WCHAR *wide_name_ptr;
303  for (wide_name_ptr = wide_name, copy_name = name;
304  (*wide_name_ptr = *copy_name);
305  wide_name_ptr++, copy_name++);
306 }
static BOOL copy_name(const char *ptr, char **name)
Definition: reflection.c:154
__wchar_t WCHAR
Definition: xmlstorage.h:180
Definition: name.c:36

Referenced by OfwCopyDeviceTree().

◆ OfwCopyDeviceTree()

VOID OfwCopyDeviceTree ( PCONFIGURATION_COMPONENT_DATA  ParentKey,
char name,
int  innode,
ULONG BusNumber,
ULONG DiskController,
ULONG DiskNumber 
)

Definition at line 324 of file mach.c.

330 {
331  int proplen = 0, node = innode;
332  char *prev_name, cur_name[64], data[256], *slash, devtype[64];
333  wchar_t wide_name[64];
335 
336  NarrowToWide(wide_name, name);
337 
338  /* Create a key for this device */
340  (ParentKey,
341  AdapterClass,
342  MultiFunctionAdapter,
343  0,
344  0,
345  (ULONG)-1,
346  NULL,
347  NULL,
348  0,
349  &NewKey);
350 
351  /* Add properties */
352  for (prev_name = ""; ofw_nextprop(node, prev_name, cur_name) == 1; )
353  {
354  proplen = ofw_getproplen(node, cur_name);
355  if (proplen > 256 || proplen < 0)
356  {
357  printf("Warning: not getting prop %s (too long: %d)\n",
358  cur_name, proplen);
359  continue;
360  }
361  ofw_getprop(node, cur_name, data, sizeof(data));
362 
363  /* Get device type so we can examine it */
364  if (!strcmp(cur_name, "device_type"))
365  strcpy(devtype, (char *)data);
366 
367  NarrowToWide(wide_name, cur_name);
368  //RegSetValue(NewKey, wide_name, REG_BINARY, data, proplen);
369 
370  strcpy(data, cur_name);
371  prev_name = data;
372  }
373 
374 #if 0
375  /* Special device handling */
376  if (!strcmp(devtype, "ata"))
377  {
378  OfwHandleDiskController(NewKey, node, *DiskController);
379  (*DiskController)++;
380  *DiskNumber = 0;
381  }
382  else if (!strcmp(devtype, "disk"))
383  {
384  OfwHandleDiskObject(NewKey, node, *DiskController, *DiskNumber);
385  (*DiskNumber)++;
386  }
387 #endif
388 
389  /* Subdevices */
390  for (node = ofw_child(node); node; node = ofw_peer(node))
391  {
392  ofw_package_to_path(node, data, sizeof(data));
393  slash = strrchr(data, '/');
394  if (slash) slash++; else continue;
396  (NewKey, slash, node, BusNumber, DiskController, DiskNumber);
397  }
398 }
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
struct node node
VOID OfwCopyDeviceTree(PCONFIGURATION_COMPONENT_DATA ParentKey, char *name, int innode, ULONG *BusNumber, ULONG *DiskController, ULONG *DiskNumber)
Definition: mach.c:324
smooth NULL
Definition: ftsmooth.c:416
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
Definition: halfuncs.h:156
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
VOID NTAPI FldrCreateComponentKey(IN PCONFIGURATION_COMPONENT_DATA SystemNode, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, IN IDENTIFIER_FLAG Flags, IN ULONG Key, IN ULONG Affinity, IN PCHAR IdentifierString, IN PCM_PARTIAL_RESOURCE_LIST ResourceList, IN ULONG Size, OUT PCONFIGURATION_COMPONENT_DATA *ComponentKey)
Definition: archwsup.c:147
VOID NarrowToWide(WCHAR *wide_name, char *name)
Definition: mach.c:299
Definition: name.c:36
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
unsigned int ULONG
Definition: retypes.h:1
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define printf
Definition: config.h:203
Definition: dlist.c:348

Referenced by PpcHwDetect().

◆ PpcConsGetCh()

int PpcConsGetCh ( )

Definition at line 88 of file mach.c.

88  {
89  char buf;
90  ofw_read( stdin_handle, &buf, 1 );
91  return buf;
92 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
static int stdin_handle
Definition: mach.c:30

Referenced by PpcDefaultMachVtbl().

◆ PpcConsKbHit()

BOOLEAN PpcConsKbHit ( )

Definition at line 84 of file mach.c.

84  {
85  return FALSE;
86 }

Referenced by PpcDefaultMachVtbl().

◆ PpcDefaultMachVtbl()

void PpcDefaultMachVtbl ( )

Definition at line 417 of file mach.c.

418 {
435 
437 
441 
443 
446 }
PFREELDR_MEMORY_DESCRIPTOR(* GetMemoryMap)(PULONG MaxMemoryMapSize)
Definition: machine.h:63
int PpcConsGetCh()
Definition: mach.c:88
BOOLEAN PpcDiskGetDriveGeometry(ULONG DriveNumber, PGEOMETRY DriveGeometry)
Definition: mach.c:278
VOID(* VideoClearScreen)(UCHAR Attr)
Definition: machine.h:45
PCONFIGURATION_COMPONENT_DATA(* HwDetect)(VOID)
Definition: machine.h:77
VOID(* VideoGetDisplaySize)(PULONG Width, PULONG Height, PULONG Depth)
Definition: machine.h:47
VOID PpcVideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
Definition: mach.c:152
VOID PpcVideoHideShowTextCursor(BOOLEAN Show)
Definition: mach.c:121
BOOLEAN(* VideoIsPaletteFixed)(VOID)
Definition: machine.h:54
BOOLEAN PpcDiskReadLogicalSectors(ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer)
Definition: mach.c:249
PCONFIGURATION_COMPONENT_DATA PpcHwDetect()
Definition: mach.c:400
BOOLEAN(* DiskGetDriveGeometry)(UCHAR DriveNumber, PGEOMETRY DriveGeometry)
Definition: machine.h:68
VOID(* VideoSetTextCursorPosition)(UCHAR X, UCHAR Y)
Definition: machine.h:50
TIMEINFO *(* GetTime)(VOID)
Definition: machine.h:72
VOID(* VideoGetPaletteColor)(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
Definition: machine.h:56
VOID PpcVideoSetTextCursorPosition(ULONG X, ULONG Y)
Definition: mach.c:117
BOOLEAN(* DiskReadLogicalSectors)(UCHAR DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer)
Definition: machine.h:67
BOOLEAN(* ConsKbHit)(VOID)
Definition: machine.h:42
TIMEINFO * PpcGetTime(VOID)
Definition: mach.c:292
VOID PpcVideoCopyOffScreenBufferToVRAM(PVOID Buffer)
Definition: mach.c:129
VOID(* VideoPutChar)(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: machine.h:52
VOID PpcVideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: mach.c:125
void PpcVideoClearScreen(UCHAR Attr)
Definition: mach.c:94
VOID(* VideoSetPaletteColor)(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
Definition: machine.h:55
ULONG(* VideoGetBufferSize)(VOID)
Definition: machine.h:48
int(* ConsGetCh)(VOID)
Definition: machine.h:43
ULONG(* DiskGetCacheableBlockCount)(UCHAR DriveNumber)
Definition: machine.h:69
BOOLEAN PpcVideoIsPaletteFixed()
Definition: mach.c:148
VOID(* ConsPutChar)(int Ch)
Definition: machine.h:41
MACHVTBL MachVtbl
Definition: arcemul.c:21
BOOLEAN PpcConsKbHit()
Definition: mach.c:84
ULONG PpcDiskGetCacheableBlockCount(ULONG DriveNumber)
Definition: mach.c:286
VOID(* HwIdle)(VOID)
Definition: machine.h:78
VOID PpcHwIdle(VOID)
Definition: mach.c:412
ULONG PpcVideoGetBufferSize()
Definition: mach.c:103
VOID(* VideoSync)(VOID)
Definition: machine.h:57
VOID PpcVideoSync()
Definition: mach.c:162
void PpcOfwPutChar(int ch)
Definition: mach.c:38
VOID(* VideoCopyOffScreenBufferToVRAM)(PVOID Buffer)
Definition: machine.h:53
VIDEODISPLAYMODE(* VideoSetDisplayMode)(char *DisplayMode, BOOLEAN Init)
Definition: machine.h:46
ULONG PpcGetMemoryMap(PBIOS_MEMORY_MAP BiosMemoryMap, ULONG MaxMemoryMapSize)
Definition: mach.c:186
VIDEODISPLAYMODE PpcVideoSetDisplayMode(char *DisplayMode, BOOLEAN Init)
Definition: mach.c:109
VOID PpcVideoGetDisplaySize(PULONG Width, PULONG Height, PULONG Depth)
Definition: mach.c:97
VOID(* VideoHideShowTextCursor)(BOOLEAN Show)
Definition: machine.h:51
VOID PpcVideoGetPaletteColor(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
Definition: mach.c:157

Referenced by PpcInit().

◆ PpcDiskGetCacheableBlockCount()

ULONG PpcDiskGetCacheableBlockCount ( ULONG  DriveNumber)

Definition at line 286 of file mach.c.

286  {
287  printf("GetCacheableBlockCount\n");
288  return 1;
289 }
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcDiskGetDriveGeometry()

BOOLEAN PpcDiskGetDriveGeometry ( ULONG  DriveNumber,
PGEOMETRY  DriveGeometry 
)

Definition at line 278 of file mach.c.

278  {
279  printf("GetGeometry(%d)\n", DriveNumber);
280  DriveGeometry->BytesPerSector = 512;
281  DriveGeometry->Heads = 16;
282  DriveGeometry->Sectors = 63;
283  return TRUE;
284 }
#define TRUE
Definition: types.h:120
ULONG Sectors
Definition: disk.h:28
ULONG BytesPerSector
Definition: disk.h:29
#define printf
Definition: config.h:203
ULONG Heads
Definition: disk.h:27

Referenced by PpcDefaultMachVtbl().

◆ PpcDiskReadLogicalSectors()

BOOLEAN PpcDiskReadLogicalSectors ( ULONG  DriveNumber,
ULONGLONG  SectorNumber,
ULONG  SectorCount,
PVOID  Buffer 
)

Definition at line 249 of file mach.c.

250  {
251  int rlen = 0;
252 
253  if( part_handle == -1 ) {
254  part_handle = ofw_open( BootPart );
255 
256  if( part_handle == -1 ) {
257  printf("Could not open any disk devices we know about\n");
258  return FALSE;
259  }
260  }
261 
262  if( part_handle == -1 ) {
263  printf("Got partition handle %x\n", part_handle);
264  return FALSE;
265  }
266 
267  if( ofw_seek( part_handle,
268  (ULONG)(SectorNumber >> 25),
269  (ULONG)((SectorNumber * 512) & 0xffffffff) ) ) {
270  printf("Seek to %x failed\n", (ULONG)(SectorNumber * 512));
271  return FALSE;
272  }
273 
274  rlen = ofw_read( part_handle, Buffer, (ULONG)(SectorCount * 512) );
275  return rlen > 0;
276 }
CHAR BootPart[MAX_PATH]
Definition: mach.c:34
Definition: bufpool.h:45
ULONG SectorCount
Definition: part_xbox.c:32
unsigned int ULONG
Definition: retypes.h:1
static int part_handle
Definition: mach.c:30
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcFindDevice()

int PpcFindDevice ( int  depth,
int  parent,
char devname,
int nth 
)

Definition at line 46 of file mach.c.

46  {
47  static char buf[256];
48  int next = 0;
49  int gotname = 0;
50  int match = 0;
51  int i;
52 
53  next = ofw_child( parent );
54 
55  //printf( "next = %x\n", next );
56 
57  gotname = ofw_getprop(parent, "name", buf, 256);
58 
59  //printf( "gotname = %d\n", gotname );
60 
61  match = !strncmp(buf, devname, strlen(devname));
62 
63  if( !nth && match ) return parent;
64 
65  for( i = 0; i < depth; i++ ) PpcOfwPutChar( ' ' );
66 
67  if( depth == 1 ) {
68  if( gotname > 0 ) {
69  printf( "%c Name: %s\n", match ? '*' : ' ', buf );
70  } else {
71  printf( "- No name attribute for %x\n", parent );
72  }
73  }
74 
75  while( !match && next ) {
76  i = PpcFindDevice( depth+1, next, devname, nth );
77  if( i ) return i;
78  next = ofw_peer( next );
79  }
80 
81  return 0;
82 }
int PpcFindDevice(int depth, int parent, char *devname, int *nth)
Definition: mach.c:46
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
Definition: match.c:28
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
r parent
Definition: btrfs.c:2897
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
static unsigned __int64 next
Definition: rand_nt.c:6
void PpcOfwPutChar(int ch)
Definition: mach.c:38
#define printf
Definition: config.h:203

◆ PpcGetMemoryMap()

ULONG PpcGetMemoryMap ( PBIOS_MEMORY_MAP  BiosMemoryMap,
ULONG  MaxMemoryMapSize 
)

Definition at line 186 of file mach.c.

187  {
188  int i, memhandle, total = 0, slots = 0, last = 0x40000, allocstart = 0x1000000;
189  int regdata[0x40];
190 
191  printf("PpcGetMemoryMap(%d)\n", MaxMemoryMapSize);
192 
193  memhandle = ofw_finddevice("/memory");
194 
195  ofw_getprop(memhandle, "reg", (char *)regdata, sizeof(regdata));
196 
197  /* Try to claim some memory in usable blocks. Try to get some 8mb bits */
198  for( i = 0; i < sizeof(claimed) / sizeof(claimed[0]); ) {
199  if (!claimed[i])
200  claimed[i] = ofw_claim(allocstart, 8 * 1024 * 1024, 0x1000);
201 
202  allocstart += 8 * 1024 * 1024;
203 
204  if (claimed[i]) {
205  if (last < claimed[i]) {
206  BiosMemoryMap[slots].Type = BiosMemoryAcpiReclaim;
207  BiosMemoryMap[slots].BaseAddress = last;
208  BiosMemoryMap[slots].Length = claimed[i] - last;
209  slots++;
210  }
211 
212  BiosMemoryMap[slots].Type = BiosMemoryUsable;
213  BiosMemoryMap[slots].BaseAddress = claimed[i];
214  BiosMemoryMap[slots].Length = 8 * 1024 * 1024;
215 
216  total += BiosMemoryMap[slots].Length;
217  last =
218  BiosMemoryMap[slots].BaseAddress +
219  BiosMemoryMap[slots].Length;
220  slots++;
221  i++;
222  }
223  }
224 
225  /* Get the rest until the end of the memory object as we see it */
226  if (last < regdata[1]) {
227  BiosMemoryMap[slots].Type = BiosMemoryAcpiReclaim;
228  BiosMemoryMap[slots].BaseAddress = last;
229  BiosMemoryMap[slots].Length = regdata[1] - last;
230  slots++;
231  }
232 
233  for (i = 0; i < slots; i++) {
234  printf("MemoryMap[%d] = (%x:%x)\n",
235  i,
237  (int)BiosMemoryMap[i].Length);
238 
239  }
240 
241  mem_range_end = regdata[1];
242 
243  printf( "Returning memory map (%d entries, %dk free, %dk total ram)\n",
244  slots, total / 1024, regdata[1] / 1024 );
245 
246  return slots;
247 }
POINT last
Definition: font.c:46
PFREELDR_MEMORY_DESCRIPTOR BiosMemoryMap
Definition: meminit.c:33
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
int mem_range_end
Definition: mach.c:167
#define printf
Definition: config.h:203
int claimed[4]
Definition: mach.c:32

Referenced by PpcDefaultMachVtbl().

◆ PpcGetTime()

TIMEINFO* PpcGetTime ( VOID  )

Definition at line 292 of file mach.c.

293 {
294  static TIMEINFO TimeInfo;
295  //printf("PpcGetTime\n");
296  return &TimeInfo;
297 }
Definition: fw.h:9

Referenced by PpcDefaultMachVtbl().

◆ PpcHwDetect()

Definition at line 400 of file mach.c.

400  {
402  ULONG BusNumber = 0, DiskController = 0, DiskNumber = 0;
403  int node = ofw_finddevice("/");
404 
406 
408  return RootKey;
409 }
static PMEMKEY RootKey
Definition: registry.c:55
VOID OfwCopyDeviceTree(PCONFIGURATION_COMPONENT_DATA ParentKey, char *name, int innode, ULONG *BusNumber, ULONG *DiskController, ULONG *DiskNumber)
Definition: mach.c:324
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
Definition: halfuncs.h:156
unsigned int ULONG
Definition: retypes.h:1
VOID NTAPI FldrCreateSystemKey(OUT PCONFIGURATION_COMPONENT_DATA *SystemNode)
Definition: archwsup.c:89
Definition: dlist.c:348

Referenced by PpcDefaultMachVtbl().

◆ PpcHwIdle()

VOID PpcHwIdle ( VOID  )

Definition at line 412 of file mach.c.

413 {
414  /* UNIMPLEMENTED */
415 }

Referenced by PpcDefaultMachVtbl().

◆ PpcInit()

void PpcInit ( of_proxy  the_ofproxy)

Definition at line 475 of file mach.c.

475  {
476  // Hack to be a bit easier on ram
477  CacheSizeLimit = 64 * 1024;
478  ofproxy = the_ofproxy;
480  if(ofproxy) PpcOfwInit();
481  else PpcPrepInit();
482 }
void PpcOfwInit()
Definition: mach.c:448
void PpcDefaultMachVtbl()
Definition: mach.c:417
void PpcPrepInit()
Definition: prep.c:123
of_proxy ofproxy
Definition: mach.c:28
ULONG CacheSizeLimit
Definition: cache.c:34

◆ PpcInitializeMmu()

VOID PpcInitializeMmu ( )

Definition at line 168 of file mach.c.

169 {
170  if(!mmu_initialized)
171  {
172  MmuInit();
173  MmuDbgInit(0, 0x800003f8);
175  //MmuDbgEnter(0x20);
176  mmu_initialized = 1;
177  }
178 }
static void MmuDbgInit(int deviceType, int devicePort)
Definition: mmu.h:267
#define MmuInit()
Definition: mmu.h:177
int mmu_initialized
Definition: mach.c:166
static void MmuSetMemorySize(paddr_t size)
Definition: mmu.h:232
int mem_range_end
Definition: mach.c:167

◆ PpcOfwInit()

void PpcOfwInit ( )

Definition at line 448 of file mach.c.

449 {
450  chosen_package = ofw_finddevice( "/chosen" );
451 
452  ofw_getprop(chosen_package, "bootargs",
453  CmdLine, sizeof(CmdLine));
454  ofw_getprop( chosen_package, "stdin",
455  (char *)&stdin_handle, sizeof(stdin_handle) );
456  ofw_getprop( chosen_package, "stdout",
457  (char *)&stdout_handle, sizeof(stdout_handle) );
458  ofw_getprop( chosen_package, "mmu",
459  (char *)&mmu_handle, sizeof(mmu_handle) );
460 
461  // Allow forcing prep for broken OFW
462  if(!strncmp(CmdLine, "bootprep", 8))
463  {
464  printf("Going to PREP init...\n");
465  ofproxy = NULL;
466  PpcPrepInit();
467  return;
468  }
469 
470  printf( "FreeLDR version [%s]\n", FrLdrVersionString );
471 
472  BootMain( CmdLine );
473 }
void BootMain(PSTR CmdLine)
smooth NULL
Definition: ftsmooth.c:416
const PCSTR FrLdrVersionString
Definition: freeldr.c:32
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
CHAR CmdLine[MAX_PATH]
Definition: mach.c:34
void PpcPrepInit()
Definition: prep.c:123
static int chosen_package
Definition: mach.c:30
of_proxy ofproxy
Definition: mach.c:28
static int stdout_handle
Definition: mach.c:30
static int stdin_handle
Definition: mach.c:30
int mmu_handle
Definition: mach.c:31
#define printf
Definition: config.h:203

Referenced by PpcInit().

◆ PpcOfwPutChar()

void PpcOfwPutChar ( int  ch)

Definition at line 38 of file mach.c.

38  {
39  char buf[3];
40  if( ch == 0x0a ) { buf[0] = 0x0d; buf[1] = 0x0a; }
41  else { buf[0] = ch; buf[1] = 0; }
42  buf[2] = 0;
43  ofw_write(stdout_handle, buf, strlen(buf));
44 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
static int stdout_handle
Definition: mach.c:30

Referenced by PpcDefaultMachVtbl(), and PpcFindDevice().

◆ PpcPrepGetMemoryMap()

ULONG PpcPrepGetMemoryMap ( PBIOS_MEMORY_MAP  BiosMemoryMap,
ULONG  MaxMemoryMapSize 
)

Definition at line 67 of file prep.c.

69 {
70  // Probe memory
71  paddr_t physAddr;
72  register int oldStore = 0, newStore = 0, change = 0, oldmsr;
73 
74  __asm__("mfmsr %0\n" : "=r" (oldmsr));
75  change = oldmsr & 0x6fff;
76  __asm__("mtmsr %0\n" : : "r" (change));
77 
78  // Find the last ram address in physical space ... this bypasses mapping
79  // but could run into non-ram objects right above ram. Usually systems
80  // aren't designed like that though.
81  for (physAddr = 0x40000, change = newStore;
82  (physAddr < 0x80000000) && (change == newStore);
83  physAddr += 1 << 12)
84  {
85  oldStore = GetPhys(physAddr);
86  newStore = (physAddr & 0x1000) ? 0x55aa55aa : 0xaa55aa55;
87  SetPhys(physAddr, newStore);
88  change = GetPhys(physAddr);
89  SetPhys(physAddr, oldStore);
90  }
91  // Back off by one page
92  physAddr -= 0x1000;
93  BiosMemoryMap[0].BaseAddress = 0x30000; // End of ppcmmu
95  BiosMemoryMap[0].Length = physAddr - BiosMemoryMap[0].BaseAddress;
96 
97  __asm__("mtmsr %0\n" : : "r" (oldmsr));
98 
99  mem_range_end = physAddr;
100 
101  printf("Actual RAM: %d Mb\n", physAddr >> 20);
102  return 1;
103 }
int mem_range_end
Definition: mach.c:167
PFREELDR_MEMORY_DESCRIPTOR BiosMemoryMap
Definition: meminit.c:33
unsigned long paddr_t
Definition: mmu.h:89
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
ULONG GetPhys(ULONG Addr)
void SetPhys(ULONG Addr, ULONG Data)
#define printf
Definition: config.h:203

Referenced by PpcPrepInit().

◆ PpcVideoClearScreen()

void PpcVideoClearScreen ( UCHAR  Attr)

Definition at line 94 of file mach.c.

94  {
95 }

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoCopyOffScreenBufferToVRAM()

VOID PpcVideoCopyOffScreenBufferToVRAM ( PVOID  Buffer)

Definition at line 129 of file mach.c.

129  {
130  int i,j;
131  ULONG w,h,d;
132  PCHAR ChBuf = Buffer;
133  int offset = 0;
134 
135  MachVideoGetDisplaySize( &w, &h, &d );
136 
137  for( i = 0; i < h; i++ ) {
138  for( j = 0; j < w; j++ ) {
139  offset = (j * 2) + (i * w * 2);
140  if( ChBuf[offset] != video_mem[offset] ) {
141  video_mem[offset] = ChBuf[offset];
142  MachVideoPutChar(ChBuf[offset],0,j+1,i+1);
143  }
144  }
145  }
146 }
signed char * PCHAR
Definition: retypes.h:7
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
volatile char * video_mem
Definition: mach.c:36
#define MachVideoGetDisplaySize(W, H, D)
Definition: machine.h:96
GLintptr offset
Definition: glext.h:5920
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define MachVideoPutChar(Ch, Attr, X, Y)
Definition: machine.h:106
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define d
Definition: ke_i.h:81
unsigned int ULONG
Definition: retypes.h:1
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoGetBufferSize()

ULONG PpcVideoGetBufferSize ( )

Definition at line 103 of file mach.c.

103  {
104  ULONG Width, Height, Depth;
105  MachVideoGetDisplaySize( &Width, &Height, &Depth );
106  return Width * Height * Depth / 8;
107 }
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
Definition: exfuncs.h:656
#define MachVideoGetDisplaySize(W, H, D)
Definition: machine.h:96
unsigned int ULONG
Definition: retypes.h:1

Referenced by PpcDefaultMachVtbl(), and PpcVideoSetDisplayMode().

◆ PpcVideoGetDisplaySize()

VOID PpcVideoGetDisplaySize ( PULONG  Width,
PULONG  Height,
PULONG  Depth 
)

Definition at line 97 of file mach.c.

97  {
98  *Width = 80;
99  *Height = 25;
100  *Depth = 16;
101 }
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
Definition: exfuncs.h:656

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoGetPaletteColor()

VOID PpcVideoGetPaletteColor ( UCHAR  Color,
UCHAR Red,
UCHAR Green,
UCHAR Blue 
)

Definition at line 157 of file mach.c.

158  {
159  printf( "GetPaletteColor(%x)\n", Color);
160 }
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoHideShowTextCursor()

VOID PpcVideoHideShowTextCursor ( BOOLEAN  Show)

Definition at line 121 of file mach.c.

121  {
122  printf("HideShowTextCursor(%s)\n", Show ? "true" : "false");
123 }
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoIsPaletteFixed()

BOOLEAN PpcVideoIsPaletteFixed ( )

Definition at line 148 of file mach.c.

148  {
149  return FALSE;
150 }

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoPutChar()

VOID PpcVideoPutChar ( int  Ch,
UCHAR  Attr,
unsigned  X,
unsigned  Y 
)

Definition at line 125 of file mach.c.

125  {
126  printf( "\033[%d;%dH%c", Y, X, Ch );
127 }
#define Y(I)
#define Ch(x, y, z)
Definition: sha2.c:141
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoSetDisplayMode()

VIDEODISPLAYMODE PpcVideoSetDisplayMode ( char DisplayMode,
BOOLEAN  Init 
)

Definition at line 109 of file mach.c.

109  {
110  //printf( "DisplayMode: %s %s\n", DisplayMode, Init ? "true" : "false" );
111  if( Init && !video_mem ) {
113  }
114  return VideoTextMode;
115 }
volatile char * video_mem
Definition: mach.c:36
PVOID MmAllocateMemory(SIZE_T MemorySize)
ULONG PpcVideoGetBufferSize()
Definition: mach.c:103

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoSetPaletteColor()

VOID PpcVideoSetPaletteColor ( UCHAR  Color,
UCHAR  Red,
UCHAR  Green,
UCHAR  Blue 
)

Definition at line 152 of file mach.c.

153  {
154  printf( "SetPaletteColor(%x,%x,%x,%x)\n", Color, Red, Green, Blue );
155 }
Definition: bl.h:202
Definition: bl.h:199
Definition: bl.h:200
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoSetTextCursorPosition()

VOID PpcVideoSetTextCursorPosition ( ULONG  X,
ULONG  Y 
)

Definition at line 117 of file mach.c.

117  {
118  printf("SetTextCursorPosition(%d,%d)\n", X,Y);
119 }
#define Y(I)
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ PpcVideoSync()

VOID PpcVideoSync ( )

Definition at line 162 of file mach.c.

162  {
163  printf( "Sync\n" );
164 }
#define printf
Definition: config.h:203

Referenced by PpcDefaultMachVtbl().

◆ READ_PORT_UCHAR()

UCHAR NTAPI READ_PORT_UCHAR ( PUCHAR  Address)

Definition at line 528 of file mach.c.

528  {
529  return GetPhysByte(((ULONG)Address)+0x80000000);
530 }
int GetPhysByte(int Addr)
static WCHAR Address[46]
Definition: ping.c:68
unsigned int ULONG
Definition: retypes.h:1

Referenced by AcpiOsReadPort(), ComPortTest1(), ComPortTest2(), CpGetByte(), CpInitialize(), CpReadLsr(), CpSetBaud(), DetectKeyboardDevice(), DetectPS2AuxDevice(), DetectPS2AuxPort(), DetectSerialMouse(), Disable8259AIrq(), DMusMPUInterruptServiceRoutine(), EISA_ELCR_Read(), Get_Byte(), getCx86(), GetExtendedMemoryConfiguration(), GetFloppyType(), GetSerialMousePnpId(), CUSBHardwareDevice::GlobalReset(), HalHandleNMI(), HalpInitDma(), HalpQueryCMOS(), HalpReadCmos(), HalpReboot(), HalReadDmaCounter(), HwDiskChanged(), HwDumpRegisters(), HwReset(), i8042ReadData(), i8042ReadStatus(), i8042Write(), inb_p(), InitializeSerialPort(), InitMPU(), inportb(), KdpBochsInit(), KdpSysReadIoSpace(), NdisImmediateReadPortUchar(), PcGetFloppyCount(), PcVideoGetPaletteColor(), PcVideoSet480ScanLines(), PcVideoSetDisplayEnd(), PcVideoSync(), PdoWrite(), PS2ControllerWait(), Read8254Timer(), ReadData(), ReadfromSMBus(), CUSBHardwareDevice::ReadRegister8(), ReadyForRead(), ReadyForWrite(), ScrAcquireOwnership(), ScrIoControl(), ScrSetRegisters(), ScrWrite(), ScsiPortReadPortUchar(), SerialDetectUartType(), SerialInterruptService(), SerialPnpStartDevice(), SerialReceiveByte(), SerialSendByte(), SerialSetBaudRate(), SerialSetLineControl(), SMBusWriteByte(), sound(), STDMETHODIMP_(), StorPortReadPortUchar(), TryMPU(), UhciInitializeHardware(), WriteMPU(), WriteToSMBus(), and XboxGetSerialPort().

◆ WRITE_PORT_UCHAR()

void WRITE_PORT_UCHAR ( PUCHAR  Address,
UCHAR  Value 
)

Definition at line 532 of file mach.c.

532  {
533  SetPhysByte(((ULONG)Address)+0x80000000, Value);
534 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
static WCHAR Address[46]
Definition: ping.c:68
unsigned int ULONG
Definition: retypes.h:1
void SetPhysByte(ULONG Addr, ULONG Data)

Referenced by AcpiOsWritePort(), CloseBitPlane(), ComPortTest1(), ComPortTest2(), CpEnableFifo(), CpInitialize(), CpPutByte(), CpSetBaud(), DetectKeyboardDevice(), DetectPS2AuxDevice(), DetectPS2AuxPort(), DetectSerialMouse(), DFB_BltFromVGA(), DFB_BltToVGA(), DFB_BltToVGA_Transparent(), DIB_BltFromVGA(), DIB_BltToVGA(), DIB_BltToVGAWithXlate(), Disable8259AIrq(), DisableSMPMode(), EnableApicMode(), getCx86(), GetExtendedMemoryConfiguration(), GetFloppyType(), GetSerialMousePnpId(), CUSBHardwareDevice::GlobalReset(), HalBeginSystemInterrupt(), HalDisableSystemInterrupt(), HalEnableSystemInterrupt(), HalpCalibrateStallExecution(), HalpDmaInitializeEisaAdapter(), HalpEndSystemInterrupt(), HalpInitDma(), HalpInitPICs(), HalpPCIReleaseSynchronizationType2(), HalpPCIReleaseSynchronzationType2(), HalpPCISynchronizeType2(), HalpQueryCMOS(), HalpReadCmos(), HalpReboot(), HalPutCharacter(), HalpWriteCmos(), HalpWriteResetCommand(), HalReadDmaCounter(), HwPowerOff(), HwReset(), HwSetDataRate(), HwTurnOffMotor(), HwTurnOnMotor(), i8042Write(), InitializeSerialPort(), IoFlushAdapterBuffers(), IoMapTransfer(), KdpBochsDebugPrint(), KdpSysWriteIoSpace(), KiSystemService(), NdisImmediateWritePortUchar(), OpenBitPlane(), outb_p(), outportb(), Parallel_putchar(), Parallel_Reset(), PcGetFloppyCount(), PcVideoGetPaletteColor(), PcVideoSet480ScanLines(), PcVideoSetDisplayEnd(), PcVideoSetPaletteColor(), PdoWrite(), Read8254Timer(), ReadfromSMBus(), ScrAcquireOwnership(), ScrIoControl(), ScrSetRegisters(), ScrWrite(), ScsiPortWritePortUchar(), Send_Byte(), SerialDetectUartType(), SerialDeviceControl(), SerialInterruptService(), SerialPnpStartDevice(), SerialReceiveByte(), SerialSendByte(), SerialSetBaudRate(), SerialSetLineControl(), setCx86(), SMBusWriteByte(), sound(), StorPortWritePortUchar(), UhciInitializeHardware(), VGADDI_BltBrush(), VGADDI_BltFromSavedScreenBits(), VGADDI_BltPointerToVGA(), VGADDI_BltToSavedScreenBits(), VGADDIFillSolid(), vgaGetByte(), vgaHLine(), vgaPutByte(), vgaPutPixel(), vgaReadScan(), vgaVLine(), vgaWriteScan(), WriteAddress(), WriteData(), WriteMPU(), CUSBHardwareDevice::WriteRegister8(), WriteToSMBus(), and XboxGetSerialPort().

Variable Documentation

◆ AcpiPresent

BOOLEAN AcpiPresent = FALSE

Definition at line 33 of file mach.c.

Referenced by WinLdrInitializePhase1().

◆ BootPart

CHAR BootPart[MAX_PATH] = ""

Definition at line 34 of file mach.c.

Referenced by MachInit(), and PpcDiskReadLogicalSectors().

◆ CacheSizeLimit

ULONG CacheSizeLimit

Definition at line 34 of file cache.c.

Referenced by CacheInternalCheckCacheSizeLimits(), CacheInternalDumpBlockList(), and PpcInit().

◆ chosen_package

int chosen_package
static

Definition at line 30 of file mach.c.

Referenced by MachInit(), and PpcOfwInit().

◆ claimed

int claimed[4]

Definition at line 32 of file mach.c.

Referenced by PpcGetMemoryMap().

◆ CmdLine

◆ FrLdrBootPath

◆ jmp

◆ mem_range_end

int mem_range_end

Definition at line 167 of file mach.c.

Referenced by PpcGetMemoryMap(), PpcInitializeMmu(), and PpcPrepGetMemoryMap().

◆ mmu_handle

int mmu_handle = 0

Definition at line 31 of file mach.c.

Referenced by MmuTranslate(), and PpcOfwInit().

◆ mmu_initialized

int mmu_initialized = 0

Definition at line 166 of file mach.c.

Referenced by PpcInitializeMmu().

◆ ofproxy

of_proxy ofproxy

Definition at line 28 of file mach.c.

Referenced by MachInit(), MmuTranslate(), PpcInit(), and PpcOfwInit().

◆ PageDirectoryEnd

void * PageDirectoryEnd

Definition at line 29 of file mach.c.

◆ PageDirectoryStart

void* PageDirectoryStart

Definition at line 29 of file mach.c.

◆ part_handle

int part_handle = -1
static

Definition at line 30 of file mach.c.

Referenced by PpcDiskReadLogicalSectors().

◆ stdin_handle

int stdin_handle
static

Definition at line 30 of file mach.c.

Referenced by PpcConsGetCh(), and PpcOfwInit().

◆ stdout_handle

int stdout_handle
static

Definition at line 30 of file mach.c.

Referenced by PpcOfwInit(), and PpcOfwPutChar().

◆ video_mem

volatile char* video_mem = 0

Definition at line 36 of file mach.c.

Referenced by PpcVideoCopyOffScreenBufferToVRAM(), and PpcVideoSetDisplayMode().