@@ -39,21 +39,10 @@ pub(super) unsafe fn validate_checksum(ptr: *const u8, size: usize) -> bool {
39
39
sum == 0
40
40
}
41
41
42
- pub ( super ) trait RsdtTyp {
43
- fn as_usize ( self ) -> usize ;
44
- }
45
-
46
- impl RsdtTyp for u32 {
47
- fn as_usize ( self ) -> usize {
48
- self as _
49
- }
50
- }
42
+ pub ( super ) trait RsdtTyp { }
51
43
52
- impl RsdtTyp for u64 {
53
- fn as_usize ( self ) -> usize {
54
- self as _
55
- }
56
- }
44
+ impl RsdtTyp for u32 { }
45
+ impl RsdtTyp for u64 { }
57
46
58
47
pub ( super ) trait RsdtHeader {
59
48
fn signature ( & self ) -> & [ u8 ] ;
@@ -103,7 +92,7 @@ pub(super) struct Rsdt<T: RsdtTyp + core::marker::Sized> {
103
92
104
93
impl Rsdt < u32 > {
105
94
pub fn new ( address : VirtAddr ) -> & ' static Self {
106
- let this = unsafe { & * ( address. as_ptr ( ) as * const Self ) } ;
95
+ let this = unsafe { & * address. as_ptr :: < Self > ( ) } ;
107
96
108
97
let valid_checksum = this. header . is_valid ( ) ;
109
98
let valid_signature = this. header . signature ( ) == b"RSDT" ;
@@ -144,7 +133,7 @@ impl Rsdt<u32> {
144
133
145
134
impl Rsdt < u64 > {
146
135
pub fn new ( address : VirtAddr ) -> & ' static Self {
147
- let this = unsafe { & * ( address. as_ptr ( ) as * const Self ) } ;
136
+ let this = unsafe { & * address. as_ptr :: < Self > ( ) } ;
148
137
149
138
let valid_checksum = this. header . is_valid ( ) ;
150
139
let valid_signature = this. header . signature ( ) == b"XSDT" ;
@@ -191,7 +180,7 @@ pub(super) enum RsdtAddress {
191
180
192
181
pub ( super ) fn find_rsdt_address ( rsdp_address : VirtAddr ) -> RsdtAddress {
193
182
// Look for RSDP v2 header, and if it does not exists, look for RSDP v1 header.
194
- let v20 = unsafe { & * ( rsdp_address. as_ptr ( ) as * const Rsdp20 ) } ;
183
+ let v20 = unsafe { & * rsdp_address. as_ptr :: < Rsdp20 > ( ) } ;
195
184
let is_v20 = v20. revision >= 2 && v20. xsdt_address != 0 ;
196
185
197
186
if is_v20 {
@@ -201,7 +190,7 @@ pub(super) fn find_rsdt_address(rsdp_address: VirtAddr) -> RsdtAddress {
201
190
let xsdt_address = PhysAddr :: new ( v20. xsdt_address ) . as_hhdm_virt ( ) ;
202
191
RsdtAddress :: Xsdt ( xsdt_address)
203
192
} else {
204
- let v10 = unsafe { & * ( rsdp_address. as_ptr ( ) as * const Rsdp10 ) } ;
193
+ let v10 = unsafe { & * rsdp_address. as_ptr :: < Rsdp10 > ( ) } ;
205
194
let valid = validate_rsdt_checksum ( v10) ;
206
195
207
196
assert ! ( valid, "rsdp: failed to validate RSDP v10 checksum" ) ;
0 commit comments