From 2ef2b01e07c02db339f34004445734a2dbdd80e1 Mon Sep 17 00:00:00 2001 From: AJFISH Date: Sun, 6 Dec 2009 01:57:05 +0000 Subject: Adding support for BeagleBoard. ArmPkg - Supoprt for ARM specific things that can change as the architecture changes. Plus semihosting JTAG drivers. EmbeddedPkg - Generic support for an embeddded platform. Including a light weight command line shell. BeagleBoardPkg - Platform specifics for BeagleBoard. SD Card works, but USB has issues. Looks like a bug in the open source USB stack (Our internal stack works fine). git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9518 6f19259b-4bc3-4df7-8a09-765794883524 --- EmbeddedPkg/DebugSupportDxe/DebugSupport.c | 119 ++++++++++++++++++++++++ EmbeddedPkg/DebugSupportDxe/DebugSupportDxe.inf | 28 ++++++ 2 files changed, 147 insertions(+) create mode 100644 EmbeddedPkg/DebugSupportDxe/DebugSupport.c create mode 100644 EmbeddedPkg/DebugSupportDxe/DebugSupportDxe.inf (limited to 'EmbeddedPkg/DebugSupportDxe') diff --git a/EmbeddedPkg/DebugSupportDxe/DebugSupport.c b/EmbeddedPkg/DebugSupportDxe/DebugSupport.c new file mode 100644 index 0000000000..26f4c387dc --- /dev/null +++ b/EmbeddedPkg/DebugSupportDxe/DebugSupport.c @@ -0,0 +1,119 @@ +/** @file + + Copyright (c) 2008-2009, Apple Inc. All rights reserved. + + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include + +#include +#include +#include + +#include +#include +#include + +EFI_STATUS +EFIAPI +DebugSupportGetMaximumProcessorIndex ( + IN EFI_DEBUG_SUPPORT_PROTOCOL *This, + OUT UINTN *MaxProcessorIndex + ) +{ + if (MaxProcessorIndex == NULL) { + return EFI_INVALID_PARAMETER; + } + + *MaxProcessorIndex = 0; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +DebugSupportRegisterPeriodicCallback ( + IN EFI_DEBUG_SUPPORT_PROTOCOL *This, + IN UINTN ProcessorIndex, + IN EFI_PERIODIC_CALLBACK PeriodicCallback + ) +{ + TIMER_DEBUG_SUPPORT_PROTOCOL *Timer; + EFI_STATUS Status; + + Status = gBS->LocateProtocol(&gTimerDebugSupportProtocolGuid, NULL, (VOID **)&Timer); + if (EFI_ERROR(Status)) { + return Status; + } + + Status = Timer->RegisterPeriodicCallback(Timer, PeriodicCallback); + + return Status; +} + +EFI_STATUS +EFIAPI +DebugSupportRegisterExceptionCallback ( + IN EFI_DEBUG_SUPPORT_PROTOCOL *This, + IN UINTN ProcessorIndex, + IN EFI_EXCEPTION_CALLBACK ExceptionCallback, + IN EFI_EXCEPTION_TYPE ExceptionType + ) +{ + EFI_CPU_ARCH_PROTOCOL *Cpu; + EFI_STATUS Status; + + Status = gBS->LocateProtocol(&gEfiCpuArchProtocolGuid, NULL, (VOID **)&Cpu); + if (EFI_ERROR(Status)) { + return Status; + } + + Status = Cpu->RegisterInterruptHandler(Cpu, ExceptionType, (EFI_CPU_INTERRUPT_HANDLER)ExceptionCallback); + + return Status; +} + +EFI_STATUS +EFIAPI +DebugSupportInvalidateInstructionCache ( + IN EFI_DEBUG_SUPPORT_PROTOCOL *This, + IN UINTN ProcessorIndex, + IN VOID *Start, + IN UINT64 Length + ) +{ + InvalidateInstructionCacheRange(Start, Length); + return EFI_SUCCESS; +} + +EFI_DEBUG_SUPPORT_PROTOCOL mDebugSupport = { + IsaArm, + DebugSupportGetMaximumProcessorIndex, + DebugSupportRegisterPeriodicCallback, + DebugSupportRegisterExceptionCallback, + DebugSupportInvalidateInstructionCache +}; + +EFI_STATUS +DebugSupportDxeInitialize ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle = NULL; + + ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiDebugSupportProtocolGuid); + Status = gBS->InstallMultipleProtocolInterfaces(&Handle, &gEfiDebugSupportProtocolGuid, &mDebugSupport, NULL); + + return Status; +} + diff --git a/EmbeddedPkg/DebugSupportDxe/DebugSupportDxe.inf b/EmbeddedPkg/DebugSupportDxe/DebugSupportDxe.inf new file mode 100644 index 0000000000..d3dab66ab7 --- /dev/null +++ b/EmbeddedPkg/DebugSupportDxe/DebugSupportDxe.inf @@ -0,0 +1,28 @@ +#%HEADER% +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = ArmDebugSupportDxe + FILE_GUID = 2e7c151b-cbd8-4df6-a0e3-cde660067c6a + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + + ENTRY_POINT = DebugSupportDxeInitialize + +[Sources.common] + DebugSupport.c + +[Packages] + MdePkg/MdePkg.dec + EmbeddedePkg/EmbeddedePkg.dec + +[LibraryClasses] + BaseMemoryLib + CacheMaintenanceLib + UefiDriverEntryPoint + ArmLib + +[Protocols] + gEfiCpuArchProtocolGuid + gEfiDebugSupportProtocolGuid + gTimerDebugSupportProtocolGuid + -- cgit v1.2.3