Skip to content

Commit 7ca7f67

Browse files
committed
TT Tool: Check arch through kernel ELF
1 parent b7cecaf commit 7ca7f67

File tree

7 files changed

+37
-28
lines changed

7 files changed

+37
-28
lines changed

15_virtual_mem_part3_precomputed_tables/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ $(KERNEL_ELF_RAW): $(KERNEL_ELF_RAW_DEPS)
172172
$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS)
173173
$(call color_header, "Precomputing kernel translation tables and patching kernel ELF")
174174
@cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES)
175-
@$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $(KERNEL_ELF_TTABLES)
175+
@$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $(KERNEL_ELF_TTABLES)
176176

177177
##------------------------------------------------------------------------------
178178
## Generate the stripped kernel binary
@@ -316,7 +316,7 @@ define KERNEL_TEST_RUNNER
316316
TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g')
317317
TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g')
318318

319-
$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $$TEST_ELF > /dev/null
319+
$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $$TEST_ELF > /dev/null
320320
$(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY
321321
$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY
322322
endef

15_virtual_mem_part3_precomputed_tables/README.md

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -615,8 +615,8 @@ BSP = case BSP_TYPE
615615
raise
616616
end
617617

618-
TRANSLATION_TABLES = case TARGET
619-
when :aarch64
618+
TRANSLATION_TABLES = case KERNEL_ELF.machine
619+
when :AArch64
620620
Arch::ARMv8::TranslationTable.new
621621
else
622622
raise
@@ -856,7 +856,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/Makefile 15_virtual_mem_part3_precompu
856856
+$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS)
857857
+ $(call color_header, "Precomputing kernel translation tables and patching kernel ELF")
858858
+ @cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES)
859-
+ @$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $(KERNEL_ELF_TTABLES)
859+
+ @$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $(KERNEL_ELF_TTABLES)
860860
+
861861
+##------------------------------------------------------------------------------
862862
## Generate the stripped kernel binary
@@ -873,7 +873,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/Makefile 15_virtual_mem_part3_precompu
873873
TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g')
874874
TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g')
875875

876-
+ $(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $$TEST_ELF > /dev/null
876+
+ $(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $$TEST_ELF > /dev/null
877877
$(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY
878878
$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY
879879
endef
@@ -2458,7 +2458,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/generic.rb 15_v
24582458
diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb
24592459
--- 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb
24602460
+++ 15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb
2461-
@@ -0,0 +1,92 @@
2461+
@@ -0,0 +1,96 @@
24622462
+# frozen_string_literal: true
24632463
+
24642464
+# SPDX-License-Identifier: MIT OR Apache-2.0
@@ -2474,6 +2474,10 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 1
24742474
+ @symtab_section = @elf.section_by_name('.symtab')
24752475
+ end
24762476
+
2477+
+ def machine
2478+
+ @elf.machine.to_sym
2479+
+ end
2480+
+
24772481
+ def symbol_value(symbol_name)
24782482
+ @symtab_section.symbol_by_name(symbol_name).header.st_value
24792483
+ end
@@ -2555,18 +2559,14 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 1
25552559
diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb
25562560
--- 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb
25572561
+++ 15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb
2558-
@@ -0,0 +1,47 @@
2562+
@@ -0,0 +1,46 @@
25592563
+#!/usr/bin/env ruby
25602564
+# frozen_string_literal: true
25612565
+
25622566
+# SPDX-License-Identifier: MIT OR Apache-2.0
25632567
+#
25642568
+# Copyright (c) 2021-2022 Andre Richter <[email protected]>
25652569
+
2566-
+TARGET = ARGV[0].split('-').first.to_sym
2567-
+BSP_TYPE = ARGV[1].to_sym
2568-
+kernel_elf_path = ARGV[2]
2569-
+
25702570
+require 'rubygems'
25712571
+require 'bundler/setup'
25722572
+require 'colorize'
@@ -2577,6 +2577,9 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virt
25772577
+require_relative 'bsp'
25782578
+require_relative 'arch'
25792579
+
2580+
+BSP_TYPE = ARGV[0].to_sym
2581+
+kernel_elf_path = ARGV[1]
2582+
+
25802583
+start = Time.now
25812584
+
25822585
+KERNEL_ELF = KernelELF.new(kernel_elf_path)
@@ -2588,8 +2591,8 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virt
25882591
+ raise
25892592
+ end
25902593
+
2591-
+TRANSLATION_TABLES = case TARGET
2592-
+ when :aarch64
2594+
+TRANSLATION_TABLES = case KERNEL_ELF.machine
2595+
+ when :AArch64
25932596
+ Arch::ARMv8::TranslationTable.new
25942597
+ else
25952598
+ raise

15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ def initialize(kernel_elf_path)
1313
@symtab_section = @elf.section_by_name('.symtab')
1414
end
1515

16+
def machine
17+
@elf.machine.to_sym
18+
end
19+
1620
def symbol_value(symbol_name)
1721
@symtab_section.symbol_by_name(symbol_name).header.st_value
1822
end

15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55
#
66
# Copyright (c) 2021-2022 Andre Richter <[email protected]>
77

8-
TARGET = ARGV[0].split('-').first.to_sym
9-
BSP_TYPE = ARGV[1].to_sym
10-
kernel_elf_path = ARGV[2]
11-
128
require 'rubygems'
139
require 'bundler/setup'
1410
require 'colorize'
@@ -19,6 +15,9 @@
1915
require_relative 'bsp'
2016
require_relative 'arch'
2117

18+
BSP_TYPE = ARGV[0].to_sym
19+
kernel_elf_path = ARGV[1]
20+
2221
start = Time.now
2322

2423
KERNEL_ELF = KernelELF.new(kernel_elf_path)
@@ -30,8 +29,8 @@
3029
raise
3130
end
3231

33-
TRANSLATION_TABLES = case TARGET
34-
when :aarch64
32+
TRANSLATION_TABLES = case KERNEL_ELF.machine
33+
when :AArch64
3534
Arch::ARMv8::TranslationTable.new
3635
else
3736
raise

16_virtual_mem_part4_higher_half_kernel/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ $(KERNEL_ELF_RAW): $(KERNEL_ELF_RAW_DEPS)
172172
$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS)
173173
$(call color_header, "Precomputing kernel translation tables and patching kernel ELF")
174174
@cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES)
175-
@$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $(KERNEL_ELF_TTABLES)
175+
@$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $(KERNEL_ELF_TTABLES)
176176

177177
##------------------------------------------------------------------------------
178178
## Generate the stripped kernel binary
@@ -316,7 +316,7 @@ define KERNEL_TEST_RUNNER
316316
TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g')
317317
TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g')
318318

319-
$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $$TEST_ELF > /dev/null
319+
$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $$TEST_ELF > /dev/null
320320
$(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY
321321
$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY
322322
endef

16_virtual_mem_part4_higher_half_kernel/translation_table_tool/kernel_elf.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ def initialize(kernel_elf_path)
1313
@symtab_section = @elf.section_by_name('.symtab')
1414
end
1515

16+
def machine
17+
@elf.machine.to_sym
18+
end
19+
1620
def symbol_value(symbol_name)
1721
@symtab_section.symbol_by_name(symbol_name).header.st_value
1822
end

16_virtual_mem_part4_higher_half_kernel/translation_table_tool/main.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55
#
66
# Copyright (c) 2021-2022 Andre Richter <[email protected]>
77

8-
TARGET = ARGV[0].split('-').first.to_sym
9-
BSP_TYPE = ARGV[1].to_sym
10-
kernel_elf_path = ARGV[2]
11-
128
require 'rubygems'
139
require 'bundler/setup'
1410
require 'colorize'
@@ -19,6 +15,9 @@
1915
require_relative 'bsp'
2016
require_relative 'arch'
2117

18+
BSP_TYPE = ARGV[0].to_sym
19+
kernel_elf_path = ARGV[1]
20+
2221
start = Time.now
2322

2423
KERNEL_ELF = KernelELF.new(kernel_elf_path)
@@ -30,8 +29,8 @@
3029
raise
3130
end
3231

33-
TRANSLATION_TABLES = case TARGET
34-
when :aarch64
32+
TRANSLATION_TABLES = case KERNEL_ELF.machine
33+
when :AArch64
3534
Arch::ARMv8::TranslationTable.new
3635
else
3736
raise

0 commit comments

Comments
 (0)